Python 2.7
Ubuntu 12.04
我的代码可用here。
我正在尝试为自己组建一个基础,以便更轻松地创建wxPython应用程序,我使用我最后一个程序的设置作为基础,但它无法正常工作。
当我尝试将一个按钮绑定到一个函数时出现问题,这是以前对我有用的布局,但现在当我尝试使用按钮启动程序并且绑定到位时,我收到此错误:
AttributeError: 'my_panel' object has no attribute 'on_quit'
如果我删除了绑定,程序就会启动。
发生了什么事?
我已经看过其他有关此问题的问题,而且似乎大部分时间都是打字错误,我看了,但我找不到。
答案 0 :(得分:1)
代码中的on_quit方法缩进太多了。它需要与init函数处于相同的缩进级别。这就是你所拥有的:
def __init__(self, parent):
"""docstring for __"""
wx.Panel.__init__(self, parent)
self.frame = parent
self.main_sizer = wx.BoxSizer(wx.VERTICAL)
self.widget_sizer = wx.BoxSizer(wx.VERTICAL)
self.text_object = wx.StaticText(self, -1, 'Example')
self.button_object = wx.Button(self, -1, 'QUIT')
self.button_object.Bind(wx.EVT_BUTTON, self.on_quit)
self.widget_sizer.Add(self.text_object, 0)
self.widget_sizer.Add(self.button_object, 0)
self.main_sizer.Add(self.widget_sizer, 0)
def on_quit(self, event):
"""docstring for on"""
self.Close()
这应该是这样的:
def __init__(self, parent):
"""docstring for __"""
wx.Panel.__init__(self, parent)
self.frame = parent
self.main_sizer = wx.BoxSizer(wx.VERTICAL)
self.widget_sizer = wx.BoxSizer(wx.VERTICAL)
self.text_object = wx.StaticText(self, -1, 'Example')
self.button_object = wx.Button(self, -1, 'QUIT')
self.button_object.Bind(wx.EVT_BUTTON, self.on_quit)
self.widget_sizer.Add(self.text_object, 0)
self.widget_sizer.Add(self.button_object, 0)
self.main_sizer.Add(self.widget_sizer, 0)
def on_quit(self, event):
"""docstring for on"""
self.Close()
另请注意,“self.Close()”不起作用。它应该是 self.frame.Close()