我有一段代码可以返回滑块生成的事件。
我将事件与self.Bind(wx.EVT_SCROLL,self.OnSlide)
绑定。
处理事件的代码类似于:
def OnSlide(self,event):
widget = event.GetEventObject()
这很好,但每次执行代码时都会抛出错误。它写着:
AttributeError: 'PyEventBinder' object has no attribute 'GetEventObject'
我希望能够看到哪个滑块生成了该事件,但每次尝试查找时都会出现错误。
如何让代码正确执行?
非常感谢提前。
答案 0 :(得分:1)
要调试这样的事情,请将以下内容作为事件处理程序中的第一个语句:
import pdb; pdb.set_trace()
此时将停止执行程序并为您提供交互式提示。然后,您可以发出以下命令以找出可用的方法:
print dir(event)
当我第一次学习wxPython时,我发现这种技术非常宝贵。
答案 1 :(得分: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()