2011-07-01 13 views
3

獲取事件的名稱,而不是整數ID我有以下代碼:在wxPython中

self.sliderR.Bind(wx.EVT_SCROLL,self.OnSlide)

在功能OnSlide我有插入的代碼pdb.set_trace()幫我調試。

在pdb提示符下,如果我輸入event.GetEventType()它會返回一個數字(10136),但我不知道與哪個事件對應。

10136是指wx.EVT_SCROLL還是另一個也觸發了wx.EVT_SCROLL事件的事件?如果後者是真的,我如何找到具體事件?

謝謝。

回答

4

沒有內置的方式。你將需要建立一個事件字典。羅賓·鄧恩在這裏有一些代碼,這將有助於:http://osdir.com/ml/wxpython-users/2009-11/msg00138.html

或者你可以看看我的簡單的例子:

import wx 

class MyForm(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, title="Tutorial") 

     self.eventDict = {} 
     for name in dir(wx): 
      if name.startswith('EVT_'): 
       evt = getattr(wx, name) 
       if isinstance(evt, wx.PyEventBinder): 
        self.eventDict[evt.typeId] = name 

     # Add a panel so it looks the correct on all platforms 
     panel = wx.Panel(self, wx.ID_ANY) 
     btn = wx.Button(panel, wx.ID_ANY, "Get POS") 

     btn.Bind(wx.EVT_BUTTON, self.onEvent) 
     panel.Bind(wx.EVT_LEFT_DCLICK, self.onEvent) 
     panel.Bind(wx.EVT_RIGHT_DOWN, self.onEvent) 


    def onEvent(self, event): 
     """ 
     Print out what event was fired 
     """ 
     evt_id = event.GetEventType() 
     print self.eventDict[evt_id] 


# Run the program 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyForm().Show() 
    app.MainLoop() 
+0

這是有用的!我通常手工製作一本字典,顯然不能很好地擴展。我想我會看看我是否可以合併你的例子:-) –