2011-06-29 58 views
0

我有一段代碼返回由滑塊生成的事件。如何獲取wxPython中的事件的詳細信息

我將事件與self.Bind(wx.EVT_SCROLL,self.OnSlide)綁定。

負責處理該事件的代碼讀取這樣的:

def OnSlide(self,event): 
    widget = event.GetEventObject() 

這是偉大的,但一個錯誤被拋出每次執行代碼的時間。它讀取:

AttributeError: 'PyEventBinder' object has no attribute 'GetEventObject' 

我希望能夠看到該滑塊產生的事件,但在錯誤出現每次我試圖找出時間。

我怎樣才能讓代碼正確執行?

非常感謝提前。

+0

這是一個wx.Slider,還是其他什麼東西?我有點困惑,看到PyEventBinder。任何事件都應該存在GetEventObject。 – FogleBird

回答

1

要調試這樣的事情,把下面爲您的事件處理程序的第一條語句:

import pdb; pdb.set_trace() 

這將在該點停止程序的執行,並給你一個互動的提示。然後,您可以發出以下命令找出方法:

print dir(event) 

當我第一次學習的wxPython,我發現這種方法非常寶貴的。

0

下在Windows 7上,wxPython的2.8.10.1作品對我來說,Python 2.5的

import wx 

class MyForm(wx.Frame): 

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

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

     slider = wx.Slider(panel, size=wx.DefaultSize) 
     slider.Bind(wx.EVT_SLIDER, self.onSlide) 

    #---------------------------------------------------------------------- 
    def onSlide(self, event): 
     """""" 
     obj = event.GetEventObject() 
     print obj 

#---------------------------------------------------------------------- 
# Run the program 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyForm().Show() 
    app.MainLoop() 
相關問題