QtGui.QSystemTrayIcon(),Qt中的托盤創建函數。即下圖所示的東西:

大致可分為托盤樣式設計和托盤點擊事件設計。
1 托盤樣式設計
#以下是我自定義的托盤設計函數 #托盤設計 def trayIcon(self): #托盤 tuopan = QtGui.QSystemTrayIcon(self) #創建托盤 tuopan.setIcon(QtGui.QIcon(r':/0102.png')) #設置托盤圖標 # 彈出的信息被點擊就會調用messageClicked連接的函數 #tuopan.messageClicked.connect(self.message) #托盤圖標被激活 tuopan.activated.connect(self.iconActivated) #設置提示信息 tuopan.setToolTip(u'我就是個托盤!') #創建托盤的右鍵菜單 tpMenu = QtGui.QMenu() a1 = QtGui.QAction(QtGui.QIcon('exit.png'), u'關於', self) #添加一級菜單動作選項(關於程序) a1.triggered.connect(self.about) a2 = QtGui.QAction(QtGui.QIcon('exit.png'), u'退出', self) #添加一級菜單動作選項(退出程序) a2.triggered.connect(self.quit) tpMenu.addAction(a1) tpMenu.addAction(a2) tuopan.setContextMenu(tpMenu) #把tpMenu設定為托盤的右鍵菜單 tuopan.show() #顯示托盤 #托盤創建出來時顯示的信息 tuopan.showMessage(u"標題", '托盤信息內容', icon=1) #icon的值 0沒有圖標 1是提示 2是警告 3是錯誤
上面的函數中,tuopan.showMessage一定要位於tuopan.show()函數之后,否則message的信息不會顯示。下圖為showMessage的樣式:
函數中的a1、a2是右鍵菜單中的兩個子項,如下圖:
提示信息tuopan.setToolTip(u'我就是個托盤!')顯示如下:
托盤要實現的效果是:點擊“關閉”,窗口關閉、且系統狀態欄不存在圖標,只在系統托盤存在圖標,類似微信。
實現的方式:重寫closeEvent(self, event)函數(點擊“關閉按鈕時,響應的是closeEvent函數”),該函數調用時,隱藏主窗口。
#界面上關閉按鈕 def closeEvent(self, event): event.ignore() # 忽略關閉事件 self.hide() # 隱藏窗體
右鍵執行退出程序,調用的quit函數如下:
#從托盤退出 def quit(self): app.exit() #app即為整個項目的app,已被設置為全局變量 app = QtGui.QApplication(sys.argv)
2 托盤事件
#托盤圖標事件
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.DoubleClick: #雙擊 顯示或隱藏窗口
self.a()
elif reason == QtGui.QSystemTrayIcon.Trigger: # 單擊 #MiddleClick
中鍵雙擊
pass
#響應托盤雙擊,最大最小化界面
def a(self):
if self.isMinimized() or not self.isVisible():
#若是最小化,則先正常顯示窗口,再變為活動窗口(暫時顯示在最前面)
self.showNormal()
self.activateWindow()
else:
#若不是最小化,則最小化
self.showMinimized()