2012-10-31 116 views
0

我正在处理的一个小型项目的一部分涉及“校准”屏幕捕获的屏幕坐标。
通过'屏幕',我指的是整个桌面,而不是我的GUI窗口。PyQt4 - 检测全球鼠标点击

当出现一个QDialog窗口(我将其分类)时,校准坐标。
提示用户单击屏幕上的多个位置。
我需要程序记录屏幕上任何位置出现的所有鼠标点击的位置 - 因为它们不在本窗口之内,所以不会本机触发QDialog mouseEvent。

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

如何捕获全局鼠标点击,以便在单击屏幕的任何部分时触发事件并将其发送到QDialog? (我更喜欢基于Qt的解决方案,但如果需要,我可以向其他库开放)。

谢谢!

+0

惯用的伎俩被打开全屏无框透明始终位于顶层的窗口,并捕获与鼠标事件做一些跨平台的例子。但它不适用于所有Linux平台。所以它不是完全跨平台的。 – Avaris

+0

是的,我记得在另一个程序中做了类似的事情。我称之为'篷布'。但是,我需要允许在另一个应用程序中注册鼠标点击,所以我不能阻止输入。 (我可以暂时关闭tarp并复制点击,但这似乎是一个复杂而不必要的方法)谢谢你的建议! –

回答

0

我认为这是不可能的,而是使用pyHook, 让Qt泵信息。

+0

您可否详细说明您是如何“让Qt抽取消息”?我试图实现几乎相同的东西,但我不确定如何使用PyQt为pyHook泵送消息。 – TerryTate

+1

对不起,我不再有这个代码(甚至不记得我在说什么) –