首页 > 解决方案 > 使用 MDDropdownMenu 递归地动态选择项目的问题

问题描述

有人可以帮助解决以下错误。MDDropdownMenu 引发属性错误,如下所示

AttributeError: 'super' object has no attribute '__getattr__'

下面是我的 py 文件和 kv 文件。我正在尝试在另一个列表中动态选择一项。例如:

国家= ['日本','澳大利亚','加拿大']

when Japan is selected then only states of Japan list needs to get loaded in the next list items and not states of other countries.

日本 = ['东京','千叶','关东']

我的 .py & .kv 文件如下:

class MainApp(MDApp):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.kv = Builder.load_file('../Files/test.kv')

        items = [ 'Japan', 'Australia', 'Canada']

        menu_items = [{"text": f"{i}"} for i in items]

        self.menu = MDDropdownMenu(caller=self.kv.ids.field, items=menu_items, position="bottom", width_mult=3,)

        self.menu.bind(on_release=self.set_item)

    def set_item(self, instance_menu, instance_menu_item):
        def set_item(interval):
            self.kv.ids.field.text = instance_menu_item.text
            instance_menu.dismiss()
        Clock.schedule_once(set_item, 0.5)

    def build(self):
        return self.kv
<Address>:
    id: country
    MDScreen :
        md_bg_color : [102/255,153/255,153/255,1]
        MDCard :
            size_hint : None, None
            size : 300, 450
            pos_hint : {"center_x":.5,"center_y":.5}
            elevation : 15
            md_bg_color : [157/255,159/255,48/255,1]
            padding : 20
            spacing : 30
            orientation : "vertical"

            MDTextField:
                id: field
                pos_hint: {'center_x': .5, 'center_y': .5}
                size_hint_x: None
                width: "200dp"
                hint_text: "Choose Country"
                required: True
                helper_text_mode: "on_error"
                on_focus: if self.focus: app.menu.open()

            MDTextField:
                id: field
                pos_hint: {'center_x': .5, 'center_y': .5}
                size_hint_x: None
                width: "200dp"
                hint_text: "Choose State"
                required: True
                helper_text_mode: "on_error"
                on_focus: if self.focus: app.menu.open()

            MDTextField:
                id: field
                pos_hint: {'center_x': .5, 'center_y': .5}
                size_hint_x: None
                width: "200dp"
                hint_text: "Choose City"
                required: True
                helper_text_mode: "on_error"
                on_focus: if self.focus: app.menu.open()

            MDRoundFlatButton :
                text : 'Submit'
                pos_hint : {'center_x':0.5, 'center_y':0.5}
                font_size : 20
                text_color: 0, 0, 0, 0
                on_release:
                    root.submit()

            Widget :
                size_hint_y : None
                height : 30

标签: pythonpython-3.xkivykivy-languagekivymd

解决方案


推荐阅读