2017-07-08 57 views
0
import sys 
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu 
from PyQt5.QtGui import QIcon 

class autoparse(): 
    def __init__(self): 

     self.main() 

    def main(self): 
     app = QApplication(sys.argv) 

     self.trayIcon = QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app) 
     self.menu = QMenu() 
     self.autopconfig = self.menu.addAction('Config') 
     self.autopconfig.triggered.connect(self.swapicon) 
     self.trayIcon.setContextMenu(self.menu) 

     self.trayIcon.show() 
     sys.exit(app.exec_()) 
    def swapicon(self): 
     QSystemTrayIcon.setIcon(QIcon("icons\python.ico")) 

test1 = autoparse() 

我可以得到初始圖標設置就好了,我可以通過創建2個圖標的應用程序,然後做一個self.trayIcon.hide解決此問題( )和self.newicon.show(),但我不覺得這是正確的做法。PyQt5 QSystemTrayIcon.setIcon沒有努力改變托盤圖標

Pycharm顯示通知說「預期的QSystemTrayIcon,得到了QIcon」,但如果我將QIcon換成QSystemTrayIcon那麼它說Qicon丟失。 SOOOOOO我將它更改爲QSystemTrayIcon(QIcon("icons\python.ico")並且仍然表示QIcon未填充。這似乎是問題檢測正在進行。

按照原樣運行代碼給了我「setIcon(self,QIcon):當我運行swapicon函數時,未綁定方法的第一個參數必須具有類型'QSystemTrayIcon'」。如果我刪除QIcon所以它只是setIcon(文件),然後我得到「setIcon(自我,QIcon):沒有足夠的參數」

回答

1

QSystemTrayIcon不是一個靜態元素,所以要改變一些屬性,你必須使用實例,在你的情況你必須改變:

QSystemTrayIcon.setIcon(QIcon("icons\python.ico")) 

到:

self.trayIcon.setIcon(QIcon("icons\python.ico")) 

您可能已經混淆QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app),這是一個構造函數,可以接收的圖標。

+0

這清除了它。感謝您的解釋。 – sidnical