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"但是,如果我将QIcon
与QSystemTrayIcon
交换,则说Qicon
丢失了。 SOOOOOO我将其更改为QSystemTrayIcon(QIcon("icons\python.ico")
,但仍然显示QIcon
未填充。似乎问题检测正在进行中。
按原样运行代码给我" setIcon(self,QIcon):未绑定方法的第一个参数必须具有类型' QSystemTrayIcon'"当我运行swapicon函数时。如果我删除QIcon所以它只是setIcon(文件)然后我得到" setIcon(self,QIcon):没有足够的参数"
答案 0 :(得分:2)
QSystemTrayIcon不是静态元素,因此要更改某些属性,必须使用该实例,在这种情况下,您必须更改:
QSystemTrayIcon.setIcon(QIcon("icons\python.ico"))
为:
self.trayIcon.setIcon(QIcon("icons\python.ico"))
您可能与QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)
混淆,这是一个构造函数,可以接收图标。