QSystemTrayIcon.setIcon无法更改托盘图标

2024-06-06 06:45:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Pycharm显示了一个通知,上面写着“预期的QSystemTrayIcon,得到了QIcon”,但是如果我用QSystemTrayIcon交换QIcon,那么它会说Qicon丢失了。所以我把它改成了QSystemTrayIcon(QIcon("icons\python.ico"),它仍然说QIcon还没有填满。似乎问题检测正在循环进行

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


Tags: fromimportselfappdefsyspyqt5menu
1条回答
网友
1楼 · 发布于 2024-06-06 06:45:48

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

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

致:

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

您可能被QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)弄糊涂了,这是一个构造函数,可以接收图标

相关问题 更多 >