【问题标题】:kivymd: How to add icon in Drop down menu?kivymd:如何在下拉菜单中添加图标?
【发布时间】:2021-12-01 14:30:56
【问题描述】:

我想在我的下拉菜单中添加一个左图标。它可以通过多种方式实现。但是我需要在下面的脚本中实现它,这是不正确的。

这是我的脚本:

from kivy.lang import Builder
from kivy.metrics import dp
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu

KV = '''

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


class Test(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Builder.load_string(KV)
        d_items = ['item-1',"item-2","item-3"]
        menu_items = [
            {
                "viewclass": "OneLineIconListItem",
                "text": i,
                "height": dp(40),
                "on_release": lambda x=i: self.set_item(x),
                "IconleftWidget": "icon",
                "icon":'account'
            } for i in d_items
        ]
        self.menu = MDDropdownMenu(
            caller=self.screen.ids.drop_item,
            items=menu_items,
            position="center",
            width_mult=2.3,
        )
        self.menu.bind()

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

    def build(self):
        return self.screen


Test().run()

图片:

您可以看到图标未显示。 如何在此下拉菜单中添加左图标?

提前致谢。

【问题讨论】:

    标签: python drop-down-menu kivymd


    【解决方案1】:

    我想这就是你要找的。如果有效,请标记为已回答;-)

    from kivy.lang import Builder
    from kivy.metrics import dp
    from kivymd.app import MDApp
    from kivymd.uix.menu import MDDropdownMenu
    from kivy.properties import StringProperty
    
    from kivymd.uix.list import OneLineIconListItem
    
    
    KV = '''
    
    <IconListItem>
    
        IconLeftWidget:
            icon: root.icon
    
    MDScreen:
        MDDropDownItem:
            id: drop_item
            pos_hint: {'center_x': .5, 'center_y': .5}
            text: 'Select'
            on_release: app.menu.open()
    '''
    
    class IconListItem(OneLineIconListItem):
        icon = StringProperty()
    
    class Test(MDApp):
        def __init__(self, **kwargs):
            super().__init__(**kwargs)
            self.screen = Builder.load_string(KV)
            d_items = ['item-1',"item-2","item-3"]
            menu_items = [
                {
                    "viewclass": "IconListItem",
                    "icon":'account',
                    # "height": dp(40),
                    "height": dp(56), # it looks better with 56
                    "text": i,
                    "on_release": lambda x=i: self.set_item(x),
                    # "IconleftWidget": "icon",
                } for i in d_items
            ]
            self.menu = MDDropdownMenu(
                caller=self.screen.ids.drop_item,
                items=menu_items,
                position="center",
                width_mult=2.3,
            )
            self.menu.bind()
    
        def set_item(self, text_item):
            self.screen.ids.drop_item.text=text_item
            self.menu.dismiss()
    
        def build(self):
            return self.screen
    
    
    Test().run()
    

    如果有效,请标记为已回答;-)

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 1970-01-01
      • 2021-08-29
      • 2021-05-26
      • 2015-07-30
      • 2013-04-03
      • 2020-02-24
      • 2021-10-05
      • 1970-01-01
      相关资源
      最近更新 更多