0

我正在考虑编写一个在后台运行并可以检查用户的 GUI 事件的 python 程序。

我的要求很简单:

1)当用户右键单击鼠标时,它可以显示一个选项;and when this option is chosen, my program should know this event.

2)当用户选择一个文件并单击一些预定义的组合键时,我的程序应该知道这个事件。

我应该怎么办?这是一个 GUI 程序吗?我也在想,这个程序可能是机器上的一个守护进程,可以检查用户的 GUI 事件,但我不确定我该怎么做。

谢谢。

4

2 回答 2

2

我一直在研究这个问题,虽然我没有明确的答案,但我认为分享我的发现会很好。

首先,根据this question的答案,wxPython无法跟踪或控制鼠标位置超出wxPython应用程序控制的区域。但是,正如我们在这个问题的答案中看到的那样,在某些情况下,可以创建 wxPython 可以看到的系统范围的热键(尽管我们也可以看到这可能不是最佳解决方案)。

那么什么对 OP 有用呢?好吧,构建一个执行 OP 想要的跨平台应用程序似乎几乎是不可能的,所以我假设 OP 正在为 MS Windows 开发。按照前两个问题中的建议,我研究了PyWin32 API。找到它的文档有点困难,但这个问题提供了一些有用的链接。再深入一点,我发现本教程适用于系统范围的热键以及win32event.WaitForMultipleObjectswin32event.WaitForSingleObject方法,如果 OP 可以找出正确的事件,则可能是 OP 需要捕获菜单点击的方法。

我知道这远非一个完整的答案,但希望这可以作为进一步研究的良好起点。

于 2012-08-16T05:22:34.233 回答
2

如果你说的是在 wxPython 程序中做这些事情,那么这一切都非常简单。第一个有一个 PopupMenu 小部件,第二个有一个 AcceratorTable。如果您想在 wxPython 程序之外捕获鼠标和键盘事件,那么您必须进入非常底层并挂钩到操作系统本身,这意味着确实没有任何好的方法可以跨平台. 你可能会想看看 ctypes 和类似的库来做那种事情。

于 2012-08-15T19:15:10.540 回答