大體可分爲托盤樣式設計和托盤點擊事件設計。python
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的樣式:app
函數中的a一、a2是右鍵菜單中的兩個子項,以下圖:ide
提示信息tuopan.setToolTip(u'我就是個托盤!')顯示以下:函數
托盤要實現的效果是:點擊「關閉」,窗口關閉、且系統狀態欄不存在圖標,只在系統托盤存在圖標,相似微信。ui
實現的方式:重寫closeEvent(self, event)函數(點擊「關閉按鈕時,響應的是closeEvent函數」),該函數調用時,隱藏主窗口。spa
#界面上關閉按鈕 def closeEvent(self, event): event.ignore() # 忽略關閉事件 self.hide() # 隱藏窗體
右鍵執行退出程序,調用的quit函數以下:設計
#從托盤退出 def quit(self): app.exit() #app即爲整個項目的app,已被設置爲全局變量 app = QtGui.QApplication(sys.argv)
2 托盤事件code
#托盤圖標事件 def iconActivated(self, reason): if reason == QtGui.QSystemTrayIcon.DoubleClick: #雙擊 顯示或隱藏窗口 self.a() elif reason == QtGui.QSystemTrayIcon.Trigger: # 單擊 # 中鍵雙擊 pass #響應托盤雙擊,最大最小化界面 def a(self): if self.isMinimized() or not self.isVisible(): #如果最小化,則先正常顯示窗口,再變爲活動窗口(暫時顯示在最前面) self.showNormal() self.activateWindow() else: #若不是最小化,則最小化 self.showMinimized() MiddleClick