首页 > 解决方案 > 如何从python代码文件为kivy中的小部件设置id

问题描述

class NavigationDrawer(MDApp):
def build(self):
    return Builder.load_string(KV)

def on_start(self):

    files=[{"price":"890" , "meter" : "36" , "elevator" : "True"}]

    for file in files:
        first_base_el = MDCard(size_hint=(1, None), size=(self.root.width,
              self.root.height / 4))
        second_base_el =BoxLayout(orientation='vertical')

        for element in file.keys() :

            external_el = MDRectangleFlatButton(
                    text=f'{element} : {file[element]}',
                    size_hint=(1, .2)
            )

            second_base_el.add_widget(external_el)

        first_base_el.add_widget(second_base_el)
        self.root.ids.container.add_widget(first_base_el)

我收到此错误: self.ids[element] = weakref.ref(external_el) AttributeError: 'NavigationDrawer' object has no attribute 'ids'

标签: pythonkivykivy-languagekivymd

解决方案


是的,这是因为不是在行 self.root.ids.container.add_widget(first_base_el)中,self 指的是 AppClass,然后您正在访问本身就是 appclass 的根。

AppClass 没有任何属性ids。只有小部件类将具有可访问的 ids 属性


推荐阅读