我正在尝试检索 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)
ids
字典不是App
实例的一部分,它们被添加到定义它们的根小部件中。请参阅文档。文档指出:
ids 添加到根小部件的 ids 字典中
root
小部件是在 id
中定义 kv
的小部件,而不是 root
的 App
小部件,文档人员的措辞选择不佳。如果 ids
是在实际上是 App.root
的小部件的 ids
定义中定义的,则 kv
只会出现在 App.root
中。