如何在 KivyMD 中更改 FloatingActionButton 的大小?

Posted

技术标签:

【中文标题】如何在 KivyMD 中更改 FloatingActionButton 的大小?【英文标题】:How to change size of FloatingActionButton in KivyMD? 【发布时间】:2021-09-10 05:45:56 【问题描述】:

没有参数更改有任何影响。此外,文档中指定的 set_size 函数也不起作用。 user_font_size 仅调整按钮内图标的大小,而不是按钮本身。

from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.button import MDFloatingActionButton


class MyApp(MDApp):
    def build(self):
        screen = MDScreen()
        btn_1 = MDFloatingActionButton(icon='account',
                                       pos_hint='x': .2, 'y': .1,
                                       )
        btn_2 = MDFloatingActionButton(icon='account',
                                       pos_hint='x': .3, 'y': .1,
                                       size=[16., 16.],
                                       user_font_size=64
                                       )
        btn_2.set_size((100, 100))
        screen.add_widget(btn_1)
        screen.add_widget(btn_2)
        return screen


if __name__ == '__main__':
    MyApp().run()

精英:

size_hint 不起作用并抛出错误:

[CRITICAL] [Clock ] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute

【问题讨论】:

你能提供一个minimal, reproducible example你的代码吗? 【参考方案1】:

对于 KivyMD 0.104.1 版:

不幸的是,KivyMD 文档似乎并不准确。您可以通过使用大小提示(例如:size_hint=(0.1, 0.1))来设置 FloatingActionButton 的大小以对应于窗口大小。如果要使用特定的像素值,请参见下文:

from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.button import MDFloatingActionButton


class MyApp(MDApp):
    def build(self):
        screen = MDScreen()
        btn_1 = MDFloatingActionButton(icon='account',
                                       pos_hint='x': .2, 'y': .1,
                                       )
        btn_2 = MDFloatingActionButton(icon='account',
                                       pos_hint='x': .3, 'y': .1,
                                       size=[16., 16.], # Not necessary, doesn't have an effect
                                       user_font_size=64
                                       )
        btn_2.size = (100, 100) # Modified line
        screen.add_widget(btn_1)
        screen.add_widget(btn_2)
        return screen


if __name__ == '__main__':
    MyApp().run()

无论出于什么原因,在初始化MDFloatingActionButton实例的时候不能设置按钮的大小,只能事后设置。

【讨论】:

不,那没用。而size_hint 抛出一个错误,也没有用 我的错,我使用的是 KivyMD 版本 0.104.1,而不是最新版本。我查看了最新版本的源代码,他们使值基本上是硬编码的。每次修改 MDFloatingActionButton 的大小时,都会恢复为默认值。你可能需要想办法解决这个问题。如果我找到解决方案,我会发布对此答案的编辑。

以上是关于如何在 KivyMD 中更改 FloatingActionButton 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

在 KivyMD Python 中更改开始屏幕时,如何在启动时显示或关闭消息?

在多个 kivymd 窗口中更改背景

如何动态更改 MDDialog KivyMD 中的文本字段?

如何更改 kivymd 中其他 kv 字符串的属性?

禁用全屏 kivymd

在kivymd中更改屏幕之间的过渡