2010-10-28 58 views
9

我是PyQt的初学者。我试图创建一个简单的应用程序来尝试一些工具包的许多功能。我的问题是,如何隐藏任务栏中的应用程序图标? 我不希望用户能够在任务栏中看到图标,并使用此图标将其最小化。有没有我可以用来实现这一目标的窗口标志?从任务栏隐藏PyQt应用程序

+0

的可能重复[PyQt4的最小化到托盘(http://stackoverflow.com/questions/758256/pyqt4-minimize-to-tray) – katrielalex 2010-10-28 16:52:15

+1

@katrielalex:我认为他意味着任务栏图标,而不是托盘图标。 – user225312 2010-10-28 17:03:26

+1

@PulpFiction:是; “最小化托盘”的方式是隐藏任务栏图标并制作托盘图标。 – katrielalex 2010-10-28 19:39:49

回答

0

this thread改编:

import sys 
from PyQt4.QtGui import * 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 

    widget = QWidget() 

    mainWindow = QMainWindow(widget) 
    mainWindow.show() 

    sys.exit(app.exec_()) 
0

我不会建议试图隐藏应用程序的任务栏存在,特别是如果应用程序可见。

QWidget *mainWindow = new QWidget(0, Qt::CustomizeWindowHint 
    | Qt::WindowTitleHint | Qt::WindowSystemMenuHint 
    | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint); 

如果你不想最大化标志,你可以离开:如果您只是想防止从任务栏最小化,那么你可以通过下面的窗口标志像这样创建顶级窗口部件,实现这一目标那一个也不在列表中。

Qt可以使用的各种窗口标志有记录here (Qt::WindowFlags)

5

这应该做的伎俩:

myApp.setWindowFlags(QtCore.Qt.Tool) 
1

这驱使我坚果天。完整的应用程序代码在下面实现

键位:

  • 覆盖的closeEvent(),使其能够做任何的只是隐藏窗口 或真退出
  • 创建用户的一些设施,以选择隐藏或 退出行为
  • 在实例化时不显示()主窗口,只是exec_()应用程序
import sys 
from PyQt4.QtGui import QAction, QApplication, QFrame, QIcon, \ 
    QMainWindow, QMenu, QSystemTrayIcon 
from PyQt4.QtCore import SIGNAL 

class MyApp(QMainWindow): 
    def __init__(self, parent, title): 
     super(QMainWindow, self).__init__(parent) 
     self.exitOnClose = False 
     exit = QAction(QIcon(), "Exit", self) 
     self.connect(exit, SIGNAL("triggered()"), self.exitEvent) 
     self.trayIcon = QSystemTrayIcon(QIcon(), self) 
     menu = QMenu(self) 
     menu.addAction(exit) 
     self.trayIcon.setContextMenu(menu) 
     self.connect(self.trayIcon, \ 
      SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \ 
      self.trayIconActivated) 
     self.trayIcon.show() 
     self.trayIcon.showMessage("MyApp is running!", "Click to open window\nRight click for menu") 

    def trayIconActivated(self, reason): 
     if reason == QSystemTrayIcon.Context: 
      self.trayIcon.contextMenu().show() 
     elif reason == QSystemTrayIcon.Trigger: 
      self.show() 
      self.raise_() 

    def closeEvent(self, event): 
     if self.exitOnClose: 
      self.trayIcon.hide() 
      del self.trayIcon 
      event.accept() 
     else: 
      self.hide() 
      event.setAccepted(True) 
      event.ignore() 

    def exitEvent(self): 
     self.exitOnClose = True 
     self.close() 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    myapp = MyApp(None, "My System Tray App") 
    app.exec_() 
0

如果你是在Ubuntu的使用Unity,想隐藏在左手侧的启动应用程序的图标,你可能需要Qt.SplashScreen。这对我有用,但我不记得我是否还需要Qt.Tool,这在Windows上就足够了。对于SplashScreen尝试,您可能不得不重新实现调整大小的功能,因为它会禁用QStatusBar(具有SizeGrip)的此功能。

Here是试用窗口标志的小例子。

相关问题