2012-08-15 51 views
0

我正在考慮編寫一個在後臺運行的python程序,它可以檢查用戶的GUI事件。背景python程序檢查GUI事件

我的要求很簡單:

1)當用戶右擊鼠標,它可以顯示一個選項;當選擇這個選項時,我的程序應該知道這個事件。

2)當用戶選擇一個文件並點擊某個預定義的組合鍵時,我的程序應該知道這個事件。

我該怎麼辦?這是一個GUI程序嗎?我也在想,這個程序可能是一臺機器上的守護進程,可以檢查用戶的GUI事件,但我不知道該怎麼做。

謝謝。

+0

也許看看http://www.lopesoft.com/en/fmtools/info.html它可以讓你添加自定義命令到上下文菜單 – 2012-08-15 14:06:14

+0

或者如果你只是在談論你的wx程序,「wxWidget Inspection Tool」也許'導入wx.lib。檢查; wx.lib .inspection.InspectionTool().Show()'http://wiki.wxpython.org/Widget%20Inspection%20Tool – 2012-08-15 14:10:01

+1

你的意思是當用戶點擊的時候**是不是**在wxpython裏面應用?我見過[類似的問題](http://stackoverflow.com/questions/10990643/wxpython-set-cursor-to-absolute-screen-location-and-click),但不幸的是,共識是,這是不可能的只有wxpython。 Wxpython只能跟蹤直接發送到應用程序的事情,而不能跟蹤操作系統的其他部分。您需要另一個庫來幫助追蹤應用程序之外的任何內容。 – acattle 2012-08-15 16:03:57

回答

2

如果你正在討論在wxPython程序中做這些事情,那麼這很簡單。第一個是PopupMenu小部件,第二個是AcceratorTable。如果您想要在wxPython程序之外捕獲鼠標和鍵盤事件,那麼您必須非常低級並掛接到操作系統本身,這意味着實際上沒有任何好的方法可以跨平臺。你可能會想看看ctypes和類似的庫。

+0

謝謝,我正在尋找捕捉鼠標和鍵盤事件的方法。所以你的意思是我不能在wxPython下做這個? – 2012-08-16 03:50:40

+0

不,您可以,但僅限於您自己的應用程序。它可以捕獲你想要的任何鼠標或鍵盤事件,但它不會捕獲其他應用程序中的鼠標或鍵盤事件。 – 2012-08-16 13:32:59

+0

謝謝,我打算將我的任務分成兩部分:1)檢查鼠標和鍵盤事件的本地os程序; 2)一個從本機程序接收消息的python守護進程。希望這可以工作,我現在正在開發OS X。 – 2012-08-17 03:03:21

2

我一直在研究這個問題,雖然我沒有一個明確的答案,但我認爲這將是很好的分享我發現的東西。

首先,根據this question的回答,wxPython無法跟蹤或控制wxPython應用程序控制的區域以外的鼠標位置。但是,正如我們在this question,在某些情況下的答案中可以看到的那樣,可以創建wxPython可以看到的系統範圍的熱鍵(儘管我們也可以看到這可能不是最佳解決方案)。

那麼什麼會爲OP工作?那麼,構建一個跨平臺的應用程序,完成OP所需要的東西似乎幾乎是不可能的,因此我將假設OP正在爲MS Windows開發。根據前面兩個問題中的建議,我查看了PyWin32 API。找到它的文檔有點難,但this question提供了一些有用的鏈接。多挖一點,我發現this tutorial for system-wide hotkeys以及win32event.WaitForMultipleObjectswin32event.WaitForSingleObject方法,如果OP可以找出適當的事件,可能是OP需要捕捉菜單點擊的方法。

我知道這並不完整,但希望這可以作爲進一步研究的一個很好的起點。