QSystemTrayIcon.setIcon无法更改托盘图标

3
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()来解决问题,但我觉得这不是正确的方法。

Pycharm显示通知说“预期QSystemTrayIcon,得到QIcon”,但如果我将与交换,则会说丢失。所以我将其更改为,它仍然说未填充。看起来问题检测正在循环中进行。

按原样运行代码时,当我运行swapicon函数时,会给出“setIcon(self, QIcon):未绑定方法的第一个参数必须具有类型'QSystemTrayIcon'”的错误。如果我删除QIcon,使其只是setIcon(file),那么我会得到“setIcon(self,QIcon):参数不足”的错误消息。

1个回答

5

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

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

to:

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

你可能对 QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app) 感到困惑,这是一个构造函数,可以接收图标作为参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接