self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click) AttributeError: 'MyFrame' object has no attribute 'on_button3_click' OnInit returned false, exiting...,但是我已定义该函数,且已经正确地绑定到了 self.button3 的 wx.EVT_BUTTON 事件上
时间: 2023-11-28 11:50:26 浏览: 250
出现这种情况可能是因为您在定义 `on_button3_click` 函数时,没有在函数前面加上 `self.`,导致程序无法识别该函数属于哪个对象。
请确认您的代码中,`on_button3_click` 函数是否正确定义为类的一个方法,例如:
```python
class MyFrame(wx.Frame):
def __init__(self, parent, title):
super().__init__(parent, title=title)
self.button3 = wx.Button(self, label='Button 3')
self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click)
def on_button3_click(self, event):
print('Button 3 clicked')
```
如果您已经正确地定义了 `on_button3_click` 函数,但仍然出现该错误,请检查是否有其他地方重命名了该函数,导致程序无法找到它。
相关问题
# 创建按钮2、3 self.button2 = wx.Button(self, label="导入数据") self.button2.Bind(wx.EVT_BUTTON, self.on_button2_click) self.button3 = wx.Button(self, label="查看结果") self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click)报错 self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click) AttributeError: 'MyFrame' object has no attribute 'on_button3_click' OnInit returned false, exiting...
这个错误提示说明在 `MyFrame` 类中没有定义 `on_button3_click` 方法。您需要在 `MyFrame` 类中定义 `on_button3_click` 方法,以便在按钮被点击时执行相应的操作。您可以像这样定义该方法:
```
def on_button3_click(self, event):
# 执行按钮3被点击时的操作
```
然后,将该方法绑定到按钮3的 `EVT_BUTTON` 事件上,就像您绑定按钮2的方法一样:
```
self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click)
```
如果您已经定义了 `on_button3_click` 方法,但仍然收到此错误消息,则可能是因为该方法名称与您在绑定事件时使用的名称不匹配。请确保方法名称正确拼写并匹配绑定事件时使用的名称。
# 创建按钮2、3 self.button2 = wx.Button(self, label="导入数据") self.button2.Bind(wx.EVT_BUTTON, self.on_button2_click) self.button3 = wx.Button(self, label="查看结果") self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click) # 布局显示模块和按钮2、3 sizer.Add(self.button2, flag=wx.CENTER | wx.ALL, border=10) sizer.Add(self.button3, flag=wx.CENTER | wx.ALL, border=10) self.SetSizer(sizer)报错 self.button3.Bind(wx.EVT_BUTTON, self.on_button3_click) AttributeError: 'MyFrame' object has no attribute 'on_button3_click' OnInit returned false, exiting...
这个错误提示是因为在你的代码中缺少了 `on_button3_click` 这个函数,所以无法绑定到按钮的事件上。你需要在你的代码中添加这个函数,例如:
```python
def on_button3_click(self, event):
# 处理按钮3被点击后的逻辑
```
然后再运行程序就不会报错了。记得在你的代码中也要添加对应的按钮1点击事件处理函数 `on_button1_click`。
阅读全文