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