PyQt5 QSystemTrayIcon.setIcon无法更改托盘图标

时间:2017-07-08 06:18:02

标签: python pyqt pyqt5 qsystemtrayicon

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()

我可以让初始图标设置得很好,我可以通过为app创建2个图标然后执行self.trayIcon.hide()和self.newicon.show()来解决这个问题,但我不觉得这个是正确的方法。

Pycharm发出通知说"预期的QSystemTrayIcon,得到了QIcon"但是,如果我将QIconQSystemTrayIcon交换,则说Qicon丢失了。 SOOOOOO我将其更改为QSystemTrayIcon(QIcon("icons\python.ico"),但仍然显示QIcon未填充。似乎问题检测正在进行中。

按原样运行代码给我" setIcon(self,QIcon):未绑定方法的第一个参数必须具有类型' QSystemTrayIcon'"当我运行swapicon函数时。如果我删除QIcon所以它只是setIcon(文件)然后我得到" setIcon(self,QIcon):没有足够的参数"

1 个答案:

答案 0 :(得分:2)

QSystemTrayIcon不是静态元素,因此要更改某些属性,必须使用该实例,在这种情况下,您必须更改:

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

为:

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

您可能与QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)混淆,这是一个构造函数,可以接收图标。