【问题标题】:KivyMD - MDDropDownItem / Custom Font and size?KivyMD - MDDropDownItem / 自定义字体和大小?
【发布时间】:2020-04-22 21:53:11
【问题描述】:

我花了很多时间在谷歌上搜索,但我不知道问题的答案: 可以在元素“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'的屏幕截图

【问题讨论】:

  • 检查支持的样式here。然后你使用类似"font_style": "H6" 的东西。如需更多帮助,您必须先发布minimal reproducible example..
  • 我使用了MDDropdownMenu 而不是MDDropDownItem。对不起..顺便说一句,样式应该是"H1"而不是"h1"..
  • @noEmbryo,谢谢你的提示。看起来不错的解决方案,但所有示例(ReadTheDocs;Git Example 我试过,给我错误TypeError: object.__init__() takes exactly one argument (the instance to initialize)。请你没有工作示例吗?真的谢谢。
  • 嗯,我愿意,但问题是,它在我制作的应用程序中,无法仅提取此代码。也许我会创建一个小例子,并在我找到一些时间时将其发布为答案..

标签: python kivy kivy-language


【解决方案1】:

这是一个可自定义的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()

更新:添加了一种手动关闭下拉菜单的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 2013-01-06
    • 1970-01-01
    • 2020-02-29
    • 2020-12-01
    • 2014-12-15
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多