【发布时间】:2017-09-07 07:49:38
【问题描述】:
我面临以下问题 - 每当我尝试为我的任何按钮创建事件侦听器时,都会收到以下错误:
self.button_compute.Bind(wx.EVT_BUTTON, self.on_click)
AttributeError: 'BMICalculator' object has no attribute 'button_compute'
我在这个帖子中尝试了建议的解决方案:AttributeError: 'module' object has no attribute 'PyScrolledWindow' in wxPython,但它对我不起作用。
该程序用于计算 BMI,代码如下:
import wx
class BMICalculator(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, "BMI calculator", (600, 800))
panel = wx.Panel(self)
self.Centre()
#Creating the buttons and text fields
static_text_height = wx.StaticText(panel, -1, "Height", (170, 10))
height = wx.SpinCtrl(panel, -1, pos=(164, 40), size=(60, -1))
static_text_weight = wx.StaticText(panel, -1, "Weight", (170, 100))
weight = wx.SpinCtrl(panel, -1, pos=(164, 130), size=(60, -1))
button_compute = wx.Button(panel, label="Compute", pos=(110, 180), size=(60, -1))
button_cancel = wx.Button(panel, label="Cancel", pos=(210, 180), size=(60, -1))
result_text = wx.StaticText(panel, -1, "Enter your height and weight and press compute", (68, 220))
#Adding the events for the buttons (Where I get the error)
self.button_compute.Bind(wx.EVT_BUTTON, self.on_click)
self.button_cancel.Bind(wx.EVT_CLOSE, self.click_close)
def compute_BMI(height, weight):
#BMI = x KG / (y M * y M)
height_m = height/100
BMI = weight/(height_m * height_m)
return BMI
def click_close(self, event):
self.Close(True)
def on_click(self, event):
result_text.SetValue(compute_BMI(height.GetValue(), weight.GetValue()))
def main():
app = wx.App()
frame = BMICalculator(None, -1)
frame.Show()
app.MainLoop()
enter code here
if __name__ == '__main__':
main()
任何帮助将不胜感激!
【问题讨论】:
-
看起来你的大部分错误都可以通过更好地理解类属性和实例属性来解决。 Here's 我在该主题上找到的快速教程。 (很多丢失的“自我”。)