KivyMD - значки MDDropdownMenu не отображаются (Kivy на Python 3.7) - PullRequest
0 голосов
/ 03 августа 2020

Я скопировал пример из документации KivyMD MDDropdownMenu , но я не получаю тот же результат, что и в примере, значки не отображаются.

Пример:

from kivy.lang import Builder

from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu, RightContent

KV = '''
<RightContentCls>
    disabled: True

    MDIconButton:
        icon: root.icon
        user_font_size: "16sp"
        pos_hint: {"center_y": .5}

    MDLabel:
        text: root.text
        font_style: "Caption"
        size_hint_x: None
        width: self.texture_size[0]
        text_size: None, None


Screen:

    MDRaisedButton:
        id: button
        text: "PRESS ME"
        pos_hint: {"center_x": .5, "center_y": .5}
        on_release: app.menu.open()
'''


class RightContentCls(RightContent):
    pass


class Test(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Builder.load_string(KV)

        menu_items = []
        data = [
            {"": "Open"},
            {},
            {"open-in-app": "Open in app >"},
            {"trash-can-outline": "Move to Trash"},
            {"rename-box": "Rename"},
            {"zip-box-outline": "Create zip"},
            {},
            {"": "Properties"},
        ]

        for data_item in data:
            if data_item:
                if list(data_item.items())[0][1].endswith(">"):
                    menu_items.append(
                        {
                            "right_content_cls": RightContentCls(
                                icon="menu-right-outline",
                            ),
                            "icon": list(data_item.items())[0][0],
                            "text": list(data_item.items())[0][1][:-2],
                            "height": "36dp",
                            "top_pad": "10dp",
                            "bot_pad": "10dp",
                            "divider": None,
                        }
                    )
                else:
                    menu_items.append(
                        {
                            "text": list(data_item.items())[0][1],
                            "icon": list(data_item.items())[0][0],
                            "font_style": "Caption",
                            "height": "36dp",
                            "top_pad": "10dp",
                            "bot_pad": "10dp",
                            "divider": None,
                        }
                    )
            else:
                menu_items.append(
                    {"viewclass": "MDSeparator", "height": 1}
                )
        self.menu = MDDropdownMenu(
            caller=self.screen.ids.button,
            items=menu_items,
            width_mult=4,
            callback=self.menu_callback,
        )

    def menu_callback(self, instance):
        print(instance)

    def build(self):
        return self.screen


Test().run()

Ожидаемый результат:

Ссылка на изображение, потому что у меня недостаточно репутации

Мой вывод:

Скриншот

Моя среда:

  • ОС: Windows 10
  • Python: v3.7.8
  • Kivy: v1.11.1
  • KivyMD: v0.104.1

1 Ответ

0 голосов
/ 03 августа 2020

При сборке пакета включите в требования следующие спецификации:

requirements = python3,kivy==2.0.0rc3,git+https://github.com/HeaTTheatR/KivyMD.git,sdl2_ttf==2.0.15

https://github.com/kivymd/KivyMD/issues/257

...