我有一段简单的Python代码,使用AppIndicator3和GI创建了一个Linux托盘指示器。这很好用。但是我想检测和处理对托盘图标的简单单击或双击。
据我所知,例如Telegram 使用 Qt类QSystemTrayIcon,它支持此功能,因为当用户双击托盘图标时,Telegram窗口会显示出来。
还有一个
设置
有人了解它是如何工作的吗?前面的两个示例都让我想知道为什么没有一个简单的鼠标点击信号/事件。我在想如果可能深入一些,也许可以继承AyatanaAppIndicator3.Indicator 类并重新编写一些事件处理程序?或者更深入地挖掘 StatusNotifierItem 和 Activate 方法,如果这是AppIndicator实现的话?
还是有任何巧妙的解决办法吗?因为这似乎是一个未解答的问题超过十年了,我对“不可能”这个答案感到不满意。
我也知道我不是第一个问这个问题的人。我进行了小型研究,并发现了多个相关线程:
据我所知,例如Telegram 使用 Qt类QSystemTrayIcon,它支持此功能,因为当用户双击托盘图标时,Telegram窗口会显示出来。
- 我知道AppIndicator3支持
scroll_event
信号,该信号在用户在托盘图标上滚动鼠标滚轮时触发。
AyatanaAppIndicator3.Indicator
接收到滚动事件时发出信号。还有一个
set_secondary_activate_target(menuitem)
方法,表示某种方式处理了中键单击事件。设置
menuitem
在AyatanaAppIndicator3.Indicator
图标/标签上发出二次激活事件(即中键单击)时被激活。有人了解它是如何工作的吗?前面的两个示例都让我想知道为什么没有一个简单的鼠标点击信号/事件。我在想如果可能深入一些,也许可以继承AyatanaAppIndicator3.Indicator 类并重新编写一些事件处理程序?或者更深入地挖掘 StatusNotifierItem 和 Activate 方法,如果这是AppIndicator实现的话?
还是有任何巧妙的解决办法吗?因为这似乎是一个未解答的问题超过十年了,我对“不可能”这个答案感到不满意。
我也知道我不是第一个问这个问题的人。我进行了小型研究,并发现了多个相关线程:
Python AppIndicator绑定 -> 如何检查菜单是否打开?
单击应用程序指示器时如何运行操作
如何编写一个单击指示器(添加中键功能)
当显示/隐藏菜单时,indicator-application不发送信号
处理点击事件和修饰符