【发布时间】:2021-09-03 18:42:15
【问题描述】:
当我尝试在 python 中使用 if 语句时遇到问题。 我看不到变量是真还是假,因为它说该变量未定义,但我在方法中定义了它。
我也在使用 kivy 和 kivyMD,以防人们想知道为什么有些代码在那里。
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 show_data(self):
inputFahrenheit = self.root.ids.fahrenheit.text
if fahrenheit1 is True:
Celsius_Half = float(inputFahrenheit) - 32
Celsius_Before_Round = Celsius_Half * 5/9
Celsius = round(Celsius_Before_Round , 1)
def convert1F(self):
fahrenheit1 = True
celsius1 = False
def convert1C(self):
fahrenheit1 = False
celsius1 = True
def convert2F(self):
fahrenheit2 = True
celsius2 = False
def convert2C(self):
fahrenheit2 = False
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()
if语句有问题有副本有问题:
"fahrenheit1" is not defined
【问题讨论】:
-
函数是变量命名空间。局部变量仅在它们内部有效。您在方法中需要的内容应附加到
self并在__init__()中初始化。 -
它说
"fahrenheit1" is not defined因为没有定义“fahrenheit1”。首先,它似乎是在您的“convertxx()”方法中定义的。然后即使在那里,它们也是局部变量(仅限于函数的范围)。 -
如果不是
if语句。变量fahrenheit1及其朋友是您定义的方法的本地变量。它们在方法返回后消失,并且在方法之外不可见。这就是你得到NameError的原因。 -
...如果你想在方法中使用
fahrenheit1和朋友,你必须在self.fahrenheit1等类中声明它们。 -
有人可以一步一步告诉我该怎么做,因为我对编程有点陌生
标签: python python-3.x if-statement kivy kivymd