如何将 MDDropdownMenu 放在 KivyMD 中的 MDlist 项目上?

Posted

技术标签:

【中文标题】如何将 MDDropdownMenu 放在 KivyMD 中的 MDlist 项目上?【英文标题】:How to put MDDropdownMenu over MDlist item in KivyMD? 【发布时间】: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

【问题讨论】:

【参考方案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()

【讨论】:

谢谢先生!有效!但是下拉菜单打开有点慢有什么建议吗?

以上是关于如何将 MDDropdownMenu 放在 KivyMD 中的 MDlist 项目上?的主要内容,如果未能解决你的问题,请参考以下文章

无法让 MDDropdownMenu 和 MDDropDownItem 工作

编写 MDDropdownMenu 项

将 Kivy 按钮链接到函数

使用 KivyMD 和 Pyinstaller 导入错误

如何将我的图标放在页面中间并将文本放在图标下方?

如何将我的移动视图放在容器流体中,将桌面站点放在容器中?