我正在考虑编写一个在后台运行的python程序,可以检查用户的GUI事件。
我的要求非常简单:
1)当用户右键单击鼠标时,它会显示一个选项;选择此选项后,我的程序应该知道此事件。
2)当用户选择文件并单击某个预定义的组合键时,我的程序应该知道此事件。
我该怎么办?这是一个GUI程序吗?我也在想,这个程序可能是机器上的一个守护进程,可以检查用户的GUI事件,但我不知道怎么能这样做。
感谢。
答案 0 :(得分:2)
如果您正在谈论在wxPython程序中执行此操作,那么这一切都非常简单。第一个是PopupMenu小部件,第二个是AcceratorTable。如果你想在wxPython程序之外捕获鼠标和键盘事件,那么你必须进入非常低级别并挂钩到操作系统本身,这意味着没有任何好的方法来跨平台做到这一点。你可能想要查看ctypes和类似的库。
答案 1 :(得分:2)
我一直在研究这个问题,虽然我没有明确的答案,但我认为分享我找到的东西会很好。
首先,根据this question的答案,wxPython无法跟踪或控制wxPython应用程序控制区域之外的鼠标位置。但是,正如我们在this question的答案中所看到的,在某些情况下可能会创建wxPython可以看到的系统级热键(尽管我们也可以看到这是可能不是最佳解决方案。)
那么什么对OP有用?那么,构建一个跨平台的应用程序来完成OP想要的东西似乎几乎是不可能的,所以我将假设OP正在为MS Windows开发。按照前两个问题中的建议,我调查了PyWin32 API。找到它的文档有点难,但this question提供了一些有用的链接。再挖掘一下,我发现了this tutorial for system-wide hotkeys以及win32event.WaitForMultipleObjects和win32event.WaitForSingleObject方法,如果OP可以找出正确的事件,可能是OP需要捕获菜单点击的内容
我知道这远不是一个完整的答案,但希望这可以作为进一步研究的良好起点。