2010-05-12 15 views
1

我想知道是否有一個字典包含wxPython類的字符串版本(如'按鈕'爲wx.Button)到他們調用的事件。這是我想要的:{'Button': wx.EVT_BUTTON, ...}。在模塊或網頁的任何地方是否有這樣的字典?wxPython字典的類他們調用的事件

回答

0

wxGlade知道這一點:對於每一個Widget有來自class ManagedBase獲得的class EditWidget具有類屬性events持有Widget發送的事件的名稱:

例如在widgets/bitmap_button/bitmap_button.py你會發現

class EditBitmapButton(ManagedBase): 

    events = ['EVT_BUTTON'] 

你可以收集你想通過導入所有這些類的信息(可自動完成,我認爲),閱讀他們的events屬性。

0

這是我做的(可能是從郵件列表在一段時間內服用):

for i in dir(wx): 
    if i.startswith('EVT_'): 
     print i 

顯然,這不正是你問什麼,但結果卻是非常直觀弄清楚什麼是什麼。

0

要闡述什麼DrBloodmoney說:

adict = {} 
for k,v in dir(wx): 
    if k.startswith('EVT_'): 
     adict[k[3:]] = v 

然而,請注意,雖然EVT_SOMETHING是一個事件類,並且是唯一的,但沒有保證Event對象的ID號是唯一的(不要與Python的id()內置函數混淆)。

此外,當你,'None',說:「我想知道是否有一個字典包含wxPython類的字符串版本(如'按鈕'爲wx.Button)到他們所調用的事件。我認爲你的意思是「小部件明確擁有事件處理程序的事件;事件處理程序通常是像wx.Button.OnPaint()這樣的類方法。」

要找到任何窗口小部件具有的事件處理程序,並且例如不使用wxGlade時,可以打開每個窗口小部件Python模塊文件。例如:

\ python的\ LIB \站點包\ WX-2.8-MSW-unicode的\ WX \ LIB \ buttons.py

還記得而WX小部件可能無法處理事件鍵入像wx.EVT_BUTTON,這並不意味着它不能。此外,這樣一個小部件可能會將某些事件類型傳遞給它的父級,無論這裏是否有事件處理程序或其父項;就像一個wx.Panel小部件一樣。