2012-10-31 118 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

對不起,我不再有這個代碼(甚至不記得我在說什麼) –