2011-07-01 27 views
3

でのイベント名ではなく整数IDを取得します。は、私は次のコードを持っているwxPythonの

event.GetEventType()と入力するとpdbプロンプトで番号(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

便利だそれ!私は通常手作業で辞書を作りましたが、それは明らかにうまくスケールされません。代わりにあなたの例を取り入れることができるかどうかを見ていきたいと思います。 –

関連する問題