首页 > 解决方案 > 无法在 kivy 中访问 2 个动态设置的 id

问题描述

我在访问 Python 代码中的 id 时遇到问题。

当我执行以下操作时,一切正常。

self.widget.ids.id_1.ids.second_id.add_widget(item)

但问题是我想通过代码设置第一个 id (id_1),所以显而易见的解决方案是这样的:

first_id = f"id_{1}" 
self.widget.ids[first_id].ids.second_id.add_widget(item)

但它不起作用。

我需要通过代码设置第一个 id。第二个是静态的。

你有什么建议吗?

编辑:
我通过将python代码中创建的小部件添加到字典来解决了这个问题。这样我就可以在不使用 id 的情况下访问它们。这是一个示例代码:

       self.dict_pages = {}
       for i in range(tab_count):
           sv = ScrollView(pos_hint={'top': 1}, size_hint_y=0.9)
           self.lst = MDList(size_hint_y=1)
           new_tab = Tab(title=f"{i + 1}")

           self.lst.clear_widgets()
           self.dict_pages[f"page_{i}"] = self.lst
           
           sv.add_widget(self.lst)
           new_tab.add_widget(sv)
           self.tabs.add_widget(new_tab)

现在每次我想访问例如第一个列表时,我都可以这样做:

self.dict_pages[f"page_{0}"].add_widget(item)

标签: pythonkivykivy-languagekivymd

解决方案


推荐阅读