我如何修复这个下拉菜单在kivymd?



我是kivy/kivymd的新手,我正试图通过kivymd文档创建一个下拉菜单。然而,每当我点击下拉菜单时,它都会返回这个错误:

AttributeError: 'Box_2'对象没有属性'menu'

我不知道我哪里做错了,欢迎任何帮助。

这是我的.py文件:(正如它出现在文档中)

class Box_2(GridLayout):
def set_item(self, instance_menu, instance_menu_item):
menu_items = [{"icon": "git", "text": f"Item {i}"} for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.Box_2.ids.drop_item,
items=menu_items,
position="center",
width_mult=4,
)
self.menu.bind(on_release=self.set_item)
self.Box_2.ids.drop_item.set_item(instance_menu_item.text)
self.menu.dismiss() 

这是我的。kv文件:

<Box_2>:
MDDropDownItem:
id: drop_item
text: 'Projeto'
on_release: root.menu.open()

您应该在Box_2类中初始化菜单变量所以现在Box_2有了变量并且当你使用init创建类时set_item应该被调用方法

class Box_2(GridLayout):
menu =None #add this line 
def set_item(self, instance_menu, instance_menu_item):
menu_items = [{"icon": "git", "text": f"Item {i}"} for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.Box_2.ids.drop_item,
items=menu_items,
position="center",
width_mult=4,
)
self.menu.bind(on_release=self.set_item)
self.Box_2.ids.drop_item.set_item(instance_menu_item.text)
self.menu.dismiss() 

我通过在定义menu_items时在每个下拉项中添加无视图来修复它。固定样本如下:

menu_items = [{'viewclass': 'MDDropDownItem', "icon": "git", "text": f"Item {i}"} for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.root.ids.button,
items=menu_items
)
self.menu.open()