QSystemTrayIcon 如何判断是否被点击或聚焦
我有一个 QSystemTrayIcon
对象,想知道它现在是否被点击了。还有,怎么判断用户什么时候点击了托盘图标和它的菜单以外的地方?我在想这可能需要安装一个事件过滤器。
我有一个用户界面想要显示,但我只想在托盘图标没有被激活的时候显示,也就是说它的托盘图标没有被选中。所以我可以用 activated
信号来判断什么时候有人点击了它,但我怎么知道它什么时候不再激活呢?
我正在使用 python 2.7.3 和 PyQt5。
1 个回答
2
在 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.DoubleClick
、QSystemTrayIcon.Context
或者 QSystemTrayIcon.MiddleClick
。