Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt4-检测全局鼠标单击_Python_User Interface_Mouseevent_Pyqt4_Global - Fatal编程技术网

Python PyQt4-检测全局鼠标单击

Python PyQt4-检测全局鼠标单击,python,user-interface,mouseevent,pyqt4,global,Python,User Interface,Mouseevent,Pyqt4,Global,我正在进行的一个小项目的一部分涉及到“校准”屏幕坐标,以便拍摄屏幕截图。 通过“屏幕”,我指的是整个桌面,而不是我的GUI窗口 当QDialog窗口出现时(我已将其子类化),坐标将被校准。 提示用户单击屏幕上的多个位置。 我需要这个程序来记录屏幕上任何地方发生的所有鼠标点击的位置——这些点击不会本机触发QDialog mouseEvent,因为它们在这个窗口之外 显然,覆盖mouseEvent方法不起作用,因为QDialog不会收到点击 如何捕获全局鼠标单击,以便在单击屏幕的任何部分时触发事件并

我正在进行的一个小项目的一部分涉及到“校准”屏幕坐标,以便拍摄屏幕截图。
通过“屏幕”,我指的是整个桌面,而不是我的GUI窗口

当QDialog窗口出现时(我已将其子类化),坐标将被校准。
提示用户单击屏幕上的多个位置。
我需要这个程序来记录屏幕上任何地方发生的所有鼠标点击的位置——这些点击不会本机触发QDialog mouseEvent,因为它们在这个窗口之外

显然,覆盖mouseEvent方法不起作用,因为QDialog不会收到点击

如何捕获全局鼠标单击,以便在单击屏幕的任何部分时触发事件并将其发送到QDialog

(我更喜欢基于Qt的解决方案,但如果需要,我会向其他库开放)


谢谢

我假设这是不可能的,我使用的是pyHook,
让Qt泵送消息。

我假设这是不可能的,我使用pyHook,
让Qt传送消息。

有一些跨平台的示例说明如何使用

有一些跨平台的示例说明如何使用

执行此操作通常的技巧是打开一个全屏无框透明始终在顶部的窗口并用它捕获鼠标事件。但它并不适用于所有Linux平台。所以它不是完全跨平台的。是的,我记得在另一个程序中做过类似的事情。我把它叫做“油布”。但是,我需要允许mouseclick也在另一个应用程序中注册,所以我不能阻止输入。(我可以暂时关闭防水布,然后重复点击,但这似乎是一个复杂且不必要的方法)谢谢你的建议!通常的技巧是打开一个全屏无框透明始终在顶部的窗口并用它捕获鼠标事件。但它并不适用于所有Linux平台。所以它不是完全跨平台的。是的,我记得在另一个程序中做过类似的事情。我把它叫做“油布”。但是,我需要允许mouseclick也在另一个应用程序中注册,所以我不能阻止输入。(我可以暂时关闭防水布,然后重复点击,但这似乎是一个复杂且不必要的方法)谢谢你的建议!你能详细说明一下你是如何“让Qt传递信息”的吗?我正在尝试实现一些几乎相同的东西,但我不确定如何使用PyQt为pyHook发送消息。对不起,我不再有这方面的代码(甚至不记得我在说什么)您能详细说明一下您是如何“让Qt发送消息”的吗?我试图实现一些几乎相同的东西,但我不确定如何使用PyQt为pyHook发送消息。对不起,我不再有这方面的代码(甚至不记得我在说什么)