首页 > 解决方案 > 为什么我的 wxPython 程序不工作?(内码)

问题描述

所以我必须写一个BMI计算器。我无法让它工作。

在我添加类和方法之前,它工作正常,但为了使计算按钮工作,我必须使用一个类。一旦我这样做了,它就坏了。

你能告诉我我做错了什么吗?

import wx


class BMI(wx.Frame):

def InitUI(self):
    window = wx.Frame(self, title="wx.SpinCtrl", size=(400, 300))
    panel = wx.Panel(window)
    label = wx.StaticText(panel, label="Body Mass Index", pos=(20, 10))
    self.weight = wx.StaticText(panel, label="weight:", pos=(20, 70))
    self.height = wx.StaticText(panel, label="height:", pos=(20, 140))
    weightset = wx.SpinCtrl(panel, value='0', pos=(100, 70))
    heightset = wx.SpinCtrl(panel, value='0', pos=(100, 140))
    result = wx.StaticText(panel, label="BMI:", pos=(300, 110))
    result2 = wx.StaticText(panel, label=" ", pos=(335, 110))
    computeButton = wx.Button(panel, label='Compute', pos=(40, 200))
    closeButton = wx.Button(panel, label='Close', pos=(250, 200))
    computeButton.Bind(wx.EVT_BUTTON, self.ComBMI)
    closeButton.Bind(wx.EVT_BUTTON, self.OnClose)

def ComBMI(self, e):
    teglo = self.weight.GetValue()
    vis = self.height.GetValue()
    bmi = teglo * (pow(vis, 2))
    self.result2.SetLabel(str(bmi))

def OnClose(self, e):
    self.Close(True)


def main():

 app = wx.App()
 ex = BMI(None)
 ex.Show()
 app.MainLoop()


 if __name__ == '__main__':
      main()

标签: pythonwxpython

解决方案


呃,问题是为什么这一切都有效......

问题(可能不完整):

  1. 没有正确初始化类BMI(请参阅如何正确使用类的教程wx.Frame
  2. 使用SpinCtrl将不允许以米为单位输入身高或将人的身高限制在 100 厘米(顺便说一下,体重为 100 公斤)。改用 asTextCtrl并解析值float(或修改 的范围/分辨率SpinCtrl
  3. self.weigth.GetValue()对对象属性执行操作,但用户输入转到self.weightset
  4. 错误的 BMI 公式(在 wiki 上查找),链接到错误的单位

推荐阅读