2010-10-28 81 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是試用窗口標誌的小例子。

相關問題