Kivy self.root.ids.login_pass.text = "" AttributeError: 'FireBase' 对象没有属性 'root'

Posted

技术标签:

【中文标题】Kivy self.root.ids.login_pass.text = "" AttributeError: \'FireBase\' 对象没有属性 \'root\'【英文标题】:Kivy self.root.ids.login_pass.text = "" AttributeError: 'FireBase' object has no attribute 'root'Kivy self.root.ids.login_pass.text = "" AttributeError: 'FireBase' 对象没有属性 'root' 【发布时间】:2021-12-10 07:29:27 【问题描述】:

所以我有一个名为 Firebase 的类,我在其中调用 google 的 api,它看起来像这样

class FireBase:
    def sign_up(self, username, email, password):
        ...
        ...
    def poggers(self):
        self.root.ids.login_pass.text = ""

在我的 login.kv 文件中,我有这样的内容:

        Button:
            ...
            ...
            on_press:
                app.firebase.poggers()

还有TextInput框:

            TextInput:
                id: login_pass
                hint_text: "Password"

每当我按下按钮时,它并没有将文本设置为“”,但它显示:“ self.root.ids.login_pass.text =” AttributeError: 'FireBase' 对象没有属性 'root'"

我尝试了很多解决方案并进行了搜索,但我不确定发生了什么,也不知道如何解决。

编辑: 我的 MainApp 多一点:

class MainApp(MDApp):
    def build(self):
        self.firebase = FireBase()
        screen_manager = ScreenManager()
        screen_manager.add_widget(Builder.load_file("kv-files/main.kv"))
        screen_manager.add_widget(Builder.load_file("kv-files/login.kv"))
        screen_manager.add_widget(Builder.load_file("kv-files/signup.kv"))
        return screen_manager

【问题讨论】:

【参考方案1】:

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

def poggers(self):
    self.ids.login_pass.text = ""

【讨论】:

以上是关于Kivy self.root.ids.login_pass.text = "" AttributeError: 'FireBase' 对象没有属性 'root'的主要内容,如果未能解决你的问题,请参考以下文章

类型错误:没有名为“kivy._clock”的模块

AttributeError:“超级”对象没有属性“__getattr__”[疑难解答:Kivy]

使用 Kivy 访问类变量

是否可以使按钮透明(Kivy)

您如何验证/检查 kivy 版本?

卡在 Kivy 中的类函数