【问题标题】:How to put MDDropdownMenu over MDlist item in KivyMD?如何将 MDDropdownMenu 放在 KivyMD 中的 MDlist 项目上?
【发布时间】:2021-02-21 16:56:32
【问题描述】:

我有一个 ScrollView,我有 MDList,我希望“当我点击 MDlist 项目时,MDDropdownMenu 应该正好在该项目上打开”。

ScrollView:
    pos_hint: {'center_x': .5, 'center_y': .4}
    MDList:
        pos_hint: {'center_x': .5, 'center_y': .85}
        id: box

【问题讨论】:

    标签: kivy kivy-language kivymd


    【解决方案1】:
    from kivy.lang import Builder
    
    from kivymd.app import MDApp
    from kivymd.uix.list import OneLineListItem
    from kivymd.uix.menu import MDDropdownMenu
    
    KV = """
    ScrollView:
    
        MDList:
            id: box
            cols: 1
    """
    
    
    class Test(MDApp):
        def build(self):
            return Builder.load_string(KV)
    
        def show_menu(self, instance):
            menu_items = [{"text": f"Item {i}"} for i in range(5)]
            menu = MDDropdownMenu(caller=instance, items=menu_items, width_mult=4
            )
            menu.open()
    
        def on_start(self):
            for i in range(20):
                self.root.ids.box.add_widget(
                    OneLineListItem(text=f"Item {i}", on_release=self.show_menu)
                )
    
    
    Test().run()
    

    【讨论】:

    • 谢谢先生!有效!但是下拉菜单打开有点慢有什么建议吗?
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多