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

Python QSystemTrayIcon.setIcon无法更改托盘图标,python,pyqt,pyqt5,qsystemtrayicon,Python,Pyqt,Pyqt5,Qsystemtrayicon,我可以将初始图标设置得很好,我可以通过为应用程序创建两个图标,然后执行self.trayIcon.hide()和self.newicon.show()来解决这个问题,但我觉得这不是正确的方法 Pycharm显示了一个通知,上面写着“预期的QSystemTrayIcon,获得了QIcon”,但如果我将QIcon与QSystemTrayIcon交换,它会说QIcon丢失。所以我把它改为qsystemmtrayicon(QIcon(“icons\python.ico”),它仍然说QIcon未填充。似乎

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

Pycharm显示了一个通知,上面写着“预期的QSystemTrayIcon,获得了QIcon”,但如果我将
QIcon
QSystemTrayIcon
交换,它会说
QIcon
丢失。所以我把它改为
qsystemmtrayicon(QIcon(“icons\python.ico”)
,它仍然说
QIcon
未填充。似乎问题检测正在循环进行


按原样运行代码会给我“setIcon(self,QIcon):当我运行swapicon函数时,unbound方法的第一个参数的类型必须为'QSystemTrayIcon'”。如果我删除了QIcon,因此它只是setIcon(文件),那么我会得到“setIcon(self,QIcon):没有足够的参数”

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

您可能会混淆了QSystemTrayIcon(QIcon(“icons\icon windowed.ico”),app),这是一个构造函数,可以接收图标

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