Python GUI温度转换器报错:FloatField对象不可调用
解决FloatField对象不可调用及相关代码错误问题
你的代码存在三个关键错误,导致终端报错和功能失效,以下是错误说明及修正方案:
- FloatField对象调用错误:
self.CelsiusField()和self.FahrenheitField()写法错误,self.CelsiusField是已经实例化的FloatField对象,无需加括号调用,直接用.getNumber()方法获取值即可。 - 未定义变量使用:
computeCelsius函数里的farh变量未定义,应该用从输入框获取到的inputVal(即华氏度数值)来计算摄氏度。 - 不存在的属性调用:
self.getInputFahrenheit和self.getInputCelsius不是类中定义的属性,需用初始化时创建的self.FahrenheitField和self.CelsiusField调用.setValue()方法设置结果。
修正后的完整代码如下:
from breezypythongui import EasyFrame class TemperatureConverter(EasyFrame): """A temperature conversion program.""" def __init__(self): """Sets up the window and widgets.""" EasyFrame.__init__(self, width=1000, title="Temperature Converter") self.addLabel(text="Celsius", row=0, column=0) self.addLabel(text="Fahrenheit", row=0, column=1) self.CelsiusField = self.addFloatField(value=0.0, row=1, column=0) self.FahrenheitField = self.addFloatField(value=32.0, row=1, column=1) self.addButton(text=">>>>>", row=2, column=0, command=self.computeFahrenheit) self.addButton(text="<<<<<", row=2, column=1, command=self.computeCelsius) def computeFahrenheit(self): inputVal = self.CelsiusField.getNumber() farh = 9.0/5.0 * inputVal + 32 self.FahrenheitField.setValue(farh) def computeCelsius(self): inputVal = self.FahrenheitField.getNumber() cels = (inputVal - 32) * 5.0/9.0 self.CelsiusField.setValue(cels) def main(): """Instantiate and pop up the window.""" TemperatureConverter().mainloop() if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者Evan McClure
相关产品推荐
相关产品推荐

