QSystemTrayIcon.setIcon无法更改托盘图标


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("iconsicon-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("iconspython.ico"))
test1 = autoparse()

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

Pycharm显示一条通知,上面写着"预期的QSystemTrayIcon,得到了QIcon",但是如果我QIconQSystemTrayIcon交换,那么它说Qicon丢失了。呜呜呜,我把它改成QSystemTrayIcon(QIcon("iconspython.ico"),它仍然说QIcon未填充。似乎问题检测正在兜圈子。

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

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

QSystemTrayIcon.setIcon(QIcon("iconspython.ico"))

自:

self.trayIcon.setIcon(QIcon("iconspython.ico"))

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

最新更新