QSystemTrayIcon确定是单击还是焦点

时间:2014-04-29 21:31:11

标签: python qt pyqt trayicon

使用QSystemTrayIcon对象,如何确定当前是否单击了它?另外,如何确定用户何时单击托盘图标及其相关菜单?我认为它涉及安装事件过滤器?

我想要显示的UI,但我只想在托盘图标当前未激活时显示,这意味着其关联的托盘图标未对焦。所以我可以使用activated信号来确定有人点击它的时间,但我如何确定它何时不再有效?

我正在使用python 2.7.3和PyQt5

1 个答案:

答案 0 :(得分:1)

QSystemTrayIcon中有一个名为activated的信号将一个理由传递给它的连接插槽。我为你创建了一个简单的例子:

from PyQt4 import QtGui
import sys

class Window(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        icon = QtGui.QSystemTrayIcon(self)
        icon.setIcon(QtGui.QIcon(r"path/to/icon.png"))
        icon.show()
        icon.activated.connect(self.systemIcon)

    def systemIcon(self, reason):
        if reason == QtGui.QSystemTrayIcon.Trigger:
            print 'Clicked'

if __name__ == "__main__":
    application = QtGui.QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(application.exec_())

如果您需要这些活动,可以将QSystemTrayIcon.Trigger更改为QSystemTrayIcon.DoubleClickQSystemTrayIcon.ContextQSystemTrayIcon.MiddleClick