更改 KivyMD 菜单中主按钮值的问题

Problem with changing the value of main button in KivyMD Menu

我创建了一个 KivyMD 菜单。当我点击主按钮时,菜单打开没有问题。但是,当我单击菜单按钮时,主按钮的值没有改变。什么都没发生。我认为代码足以实现它。有谁知道解决方案?提前致谢!

py文件:

from kivy.core.window import Window
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu


Window.size = (400, 800)


class homescreen(Screen):
    pass


GUI = Builder.load_file("main.kv")

class MainApp(MDApp, homescreen):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.homescreen = Builder.load_string("homescreen")
        menu_items = [{"icon": "git", "text": f"Item {i}"} for i in range(5)]
        self.menu = MDDropdownMenu(
            caller=self.ids.drop_item,
            items=menu_items,
            #position="center",
            width_mult=4,
        )
        self.menu.bind(on_release=self.set_item)

    def set_item(self, instance_menu, instance_menu_item):
        self.ids.drop_item.set_item(instance_menu_item.text)
        self.menu.dismiss()

    def build(self):
        return self.homescreen


if __name__ == "__main__":
    MainApp().run()

main.kv:

<homescreen>:
    MDDropDownItem:
        id: drop_item
        pos_hint: {'center_x': .5, 'center_y': .5}
        text: "Select"
        on_release: app.menu.open()

这是您改进后的代码

py文件:

from kivy.core.window import Window
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu


Window.size = (400, 800)


class homescreen(Screen):
    pass


GUI = Builder.load_file("main.kv")

class MainApp(homescreen):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.homescreen = Builder.load_string("homescreen")
        menu_items = [{"icon": "git", "text": f"Item {i}"} for i in range(5)]
        self.menu = MDDropdownMenu(
            caller=self.ids.drop_item,
            items=menu_items,
            callback=self.set_item,
            width_mult=4,
        )


    def set_item(self, instance_menu_item):
        self.ids.drop_item.text = instance_menu_item.text
        self.menu.dismiss()

    def build(self):
        return self.homescreen

class app(MDApp):
    def build(self):
        return MainApp()

if __name__ == "__main__":
    app().run()

main.ky

<homescreen>:
    MDDropDownItem:
        id: drop_item
        pos_hint: {'center_x': .5, 'center_y': .5}
        text: "Select"
        on_release: root.menu.open()