You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:10:27