簡體   English   中英

kivymd:如何在下拉菜單中添加圖標?

[英]kivymd: How to add icon in Drop down menu?

我想在我的下拉菜單中添加一個左圖標。 它可以通過多種方式實現。 但是我需要在下面的腳本中實現它,這是不正確的。

這是我的腳本:

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()

圖片: 在此處輸入圖片說明

您可以看到圖標未顯示。 如何在此下拉菜單中添加左圖標?

提前致謝。

我想這就是你要找的。 如果有效,請標記為已回答;-)

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()

如果有效,請標記為已回答;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM