【问题标题】:AttributeError: 'Programa' object has no attribute 'root'AttributeError:“Programa”对象没有属性“root”
【发布时间】:2021-10-22 21:12:39
【问题描述】:

我正在寻找制作单屏应用。我有 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'

我做错了什么?

【问题讨论】:

    标签: kivy kivy-language kivymd


    【解决方案1】:

    要使用App 类中的小部件进行访问,您需要使用self.root.ids.blablabla...,但在其他类中访问您的小部件,故事是这样的:您改用self.ids.blablabla...

    class Programa(MDBoxLayout):
        def calcular(self):
            print("O valor de soma é {}".format(self.ids.namee.text))
    

    另一个注意事项是,虽然我的回答应该是正确的,但您可能想重新检查您的 kivy 代码,因为我在那里没有看到任何名为 namee 的小部件(当然,如果 namee 是它的一个示例)不工作那么没关系)

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多