KivyMD - MDDropDownItem / Пользовательский шрифт и размер? - PullRequest
0 голосов
/ 23 апреля 2020

Я провел много времени с Googling, но я не знаю ответа на вопрос: можно ли использовать пользовательский шрифт в элементе "MDDropDownItem" KivyMD.

Пожалуйста, это возможно?

Если да, то как? Спасибо.

Вот пример:

from kivy.lang import Builder

from kivymd.app import MDApp
from kivy.uix.floatlayout import FloatLayout

Builder.load_string(
    '''
<TestScreen>:
    MDDropDownItem:
        pos_hint: {'center_x': .5, 'center_y': .5}

        font_style: 'h1'
        items: app.items
        dropdown_bg: [1, 1, 1, 1]
''')


class TestScreen(FloatLayout):
    pass


class Test(MDApp):

    def build(self):
        self.items = ['Item 1',
                      'Item 2',
                      'Item 3',
                      ]

        return TestScreen()


if __name__ == "__main__":
    Test().run()

Вот скриншоты без и с font_style: 'h1'

Same output

1 Ответ

2 голосов
/ 24 апреля 2020

Вот пример настраиваемого MDDropdownMenu с измененным размером и цветами:

from functools import partial
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu
from kivymd.toast import toast
from kivy.lang import Builder
from kivy.factory import Factory

Builder.load_string("""
<Menu@Screen>
    MDRaisedButton:
        size_hint: None, None
        size: 3 * dp(48), dp(48)
        text: 'Open menu'
        opposite_colors: True
        pos_hint: {'center_x': .5, 'center_y': .5}
        on_release: app.open_menu(self)
""")


class Test(MDApp):

    def callback_for_menu_items(self, text):
        self.menu.dismiss()
        toast(text)

    def open_menu(self, button):
        self.menu_items = [{"viewclass": "OneLineListItem",
                            "text": "Example item {}".format(i),
                            "font_style": "H5",
                            "theme_text_color": "Custom",
                            "text_color": [1, 1, 0, 1],
                            "bg_color": [1, 0, 1, 1],
                            "on_release": partial(self.callback_for_menu_items,
                                                  "Example item {}".format(i))}
                           for i in range(15)]
        self.menu = MDDropdownMenu(items=self.menu_items, width_mult=4)
        self.menu.open(button)

    def build(self):
        return Factory.Menu()


Test().run()

ОБНОВЛЕНИЕ: добавлен способ вручную закрыть раскрывающийся список

...