检索 App.get_running_app().root.ids 返回一个空字典(无法检索 ids)

问题描述 投票:0回答:1

我正在尝试检索 MDApp 下小部件的 id,但是我不断打印出一个空字典。我发现在调试问题后,id 字典没有填充,每当我尝试使用它的 ID 访问任何其他小部件时,我都会收到错误。

首先,我尝试直接在 MDApp 下的构建函数中打印 ids,然后在 on_start 函数中打印,最后尝试通过按下按钮将其打印出来:

PS:我还尝试打印出按钮本身的 id,该 id 定义为 ( """ MenuButton: id: Menu_Button "" ),但是,它也返回为空(打印出空字符串空间)。

    class MenuButton(MDFloatingActionButton):
        def press(self):
            app = MDApp.get_running_app()
            print(app.root.ids)
            print(self.id)

python kivy kivy-language kivymd
1个回答
0
投票

ids
字典不是
App
实例的一部分,它们被添加到定义它们的根小部件中。请参阅文档。文档指出:

ids 添加到根小部件的 ids 字典中

root
小部件是在
id
中定义
kv
的小部件,而不是
root
App
小部件,文档人员的措辞选择不佳。如果
ids
是在实际上是
App.root
的小部件的
ids
定义中定义的,则
kv
只会出现在
App.root
中。

© www.soinside.com 2019 - 2024. All rights reserved.