AttributeError: 'Programa' object has no attribute 'root'
AttributeError: 'Programa' object has no attribute 'root'
我想制作一个单屏应用程序。我有 3 个文本字段和一个按钮。我无法从文本字段中获取值。
这是我的 main.py 文件
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
class Programa(MDBoxLayout):
def calcular(self):
print("O valor de soma é {}".format(self.root.ids.namee.text))
class TesteApp(MDApp):
def build(self):
pass
TesteApp().run()
这是我的TesteApp.kv
Programa:
MDGridLayout:
cols: 1
MDToolbar:
title: "SDK Calc"
left_action_items: [["menu", lambda x: app.callback()]]
MDGridLayout:
cols: 1
padding: [22,32]
MDTextField:
id: soma
hint_text: "Soma"
MDTextField:
hint_text: "Digitos"
MDTextField:
hint_text: "Exceção"
MDFillRoundFlatIconButton:
text: "Calcular"
icon: "calculator-variant-outline"
on_release: root.calcular()
pos_hint: {"center_x": .5, "center_y": .5}
我遇到了错误。
File "/python/kivymd/main.py", line 6, in calcular
print("O valor de soma é {}".format(self.root.ids.namee.text))
AttributeError: 'Programa' object has no attribute 'root'
我做错了什么?
要从您的 App
class 访问小部件,您需要使用 self.root.ids.blablabla...
,但在其他 class 中访问您的小部件,故事是这样的: 您使用 self.ids.blablabla...
代替:
class Programa(MDBoxLayout):
def calcular(self):
print("O valor de soma é {}".format(self.ids.namee.text))
另一个注意事项是,虽然我的回答应该是正确的,但您可能想重新检查您的 kivy 代码,因为我在那里没有看到任何名为 namee
的小部件(当然,如果 namee
是它如何不起作用的示例然后就可以了)
我想制作一个单屏应用程序。我有 3 个文本字段和一个按钮。我无法从文本字段中获取值。
这是我的 main.py 文件
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
class Programa(MDBoxLayout):
def calcular(self):
print("O valor de soma é {}".format(self.root.ids.namee.text))
class TesteApp(MDApp):
def build(self):
pass
TesteApp().run()
这是我的TesteApp.kv
Programa:
MDGridLayout:
cols: 1
MDToolbar:
title: "SDK Calc"
left_action_items: [["menu", lambda x: app.callback()]]
MDGridLayout:
cols: 1
padding: [22,32]
MDTextField:
id: soma
hint_text: "Soma"
MDTextField:
hint_text: "Digitos"
MDTextField:
hint_text: "Exceção"
MDFillRoundFlatIconButton:
text: "Calcular"
icon: "calculator-variant-outline"
on_release: root.calcular()
pos_hint: {"center_x": .5, "center_y": .5}
我遇到了错误。
File "/python/kivymd/main.py", line 6, in calcular
print("O valor de soma é {}".format(self.root.ids.namee.text))
AttributeError: 'Programa' object has no attribute 'root'
我做错了什么?
要从您的 App
class 访问小部件,您需要使用 self.root.ids.blablabla...
,但在其他 class 中访问您的小部件,故事是这样的: 您使用 self.ids.blablabla...
代替:
class Programa(MDBoxLayout):
def calcular(self):
print("O valor de soma é {}".format(self.ids.namee.text))
另一个注意事项是,虽然我的回答应该是正确的,但您可能想重新检查您的 kivy 代码,因为我在那里没有看到任何名为 namee
的小部件(当然,如果 namee
是它如何不起作用的示例然后就可以了)