PyQt5 - 如何在运行其他代码之前更改系统托盘图标(单击时)

时间:2015-08-31 13:49:50

标签: python pyqt pyqt5 systray

我对PyQt很新,所以请耐心等待。

这是我一直在做的事情的示例代码:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QAction, QApplication,
    QMenu, 
    QSystemTrayIcon,
    )

def count():
    for x in range(0, 200000):
        print("Test " + str(x))


class TrayIcon(QSystemTrayIcon):
    def __init__(self):
        QSystemTrayIcon.__init__(self)

        self.setIcon(QIcon('off.png'))

        self.trayIconMenu = QMenu()

        item = QAction('Count', self, triggered=self.counter)
        self.trayIconMenu.addAction(item)

        self.setContextMenu(self.trayIconMenu)

        self.show()

    def counter(self):
        self.setIcon(QIcon('on.png'))

        count()

        self.setIcon(QIcon('off.png'))

if __name__ == '__main__':

    app = QApplication(sys.argv)

    trayicon = TrayIcon()
    sys.exit(app.exec_())

我会想到' Count'单击systray菜单项,系统会更改时系统图标,count()函数将执行打印,然后系统托盘图标将更改回来。目前,我没有明显的图标更改(但count()函数确实运行)。如果我取出函数和第二个setIcon()语句,那么图标确实会改变。

非常感谢任何帮助。

0 个答案:

没有答案