You need to enable JavaScript to run this app. Python if语句调用变量提示未定义(已在类方法中定义)
优惠活动
大模型
产品
解决方案
定价
更多

Python if语句调用变量提示未定义(已在类方法中定义)

问题根因

你遇到的报错本质是Python变量作用域规则导致的:在convert1F、convert1C等方法中直接定义的fahrenheit1、celsius1属于方法内部的局部变量,仅在当前方法执行时生效,方法执行结束后变量就会被销毁,其他方法(比如show_data)无法访问到这些局部变量,因此会抛出变量未定义的错误。
类实例的全局通用属性必须绑定到实例对象self上,才能在类的所有方法中共享访问。

解决方法

按照如下两步修改代码即可修复报错:

  1. 重写类的初始化方法,提前声明所有需要全局共享的标志位属性,设置默认值
  2. 所有读取、修改这些标志位的位置,都加上self.前缀,明确操作的是实例属性而非局部变量

修改后的完整代码参考:

from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivymd.uix.button import MDRectangleFlatButton, MDRoundFlatButton
from kivymd.uix.textfield import MDTextField
from kivy.lang import Builder
from kivymd.uix.menu import MDDropdownMenu

class DemoApp(MDApp):
    # 重写初始化方法,声明实例共享属性
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 初始化所有标志位默认值
        self.fahrenheit1 = False
        self.celsius1 = False
        self.fahrenheit2 = False
        self.celsius2 = False

    def show_data(self):
        inputFahrenheit = self.root.ids.fahrenheit.text
        # 读取实例属性要加self.前缀
        if self.fahrenheit1 is True:
            Celsius_Half = float(inputFahrenheit) - 32 
            Celsius_Before_Round = Celsius_Half * 5/9
            Celsius = round(Celsius_Before_Round , 1)
            # 此处可自行添加Celsius的后续处理逻辑

    def convert1F(self):
        # 赋值实例属性要加self.前缀
        self.fahrenheit1 = True
        self.celsius1 = False

    def convert1C(self):
        self.fahrenheit1 = False
        self.celsius1 = True

    def convert2F(self):
        self.fahrenheit2 = True
        self.celsius2 = False

    def convert2C(self):
        self.fahrenheit2 = False
        self.celsius2 = True

    def on_start(self):
        self.theme_cls.primary_palette = "Green"
        self.theme_cls.primary_hue = "A700"
        self.theme_cls.theme_style = "Light"

    def build(self):
        kv = Builder.load_file("test.kv") 
        screen = Screen()
        return kv
            
DemoApp().run()

内容的提问来源于stack exchange,提问作者GCIreland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 10:24:05