首页 > 解决方案 > Kivy - 动态更改基本小部件属性

问题描述

我想更改 kivy 中的基本小部件属性。这很容易用 kivy 语言完成,如下所示

<Label>:
    font_size: sp(30)

这不必在我的小部件树中影响在应用程序初始化时使用 Label 作为基类的所有类。因此,我的以下示例应用程序显示了两个按钮,其文本大于默认值,这正是我想要的。

测试应用程序.py

class Main_Screen(Screen):
    pass

class Root_Widget(ScreenManager):
    pass

class testApp(App):
    def build(self):
        return Root_Widget()

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

测试.kv

<Root_Widget>:
    Main_Screen:
        BoxLayout:
            Label:
                text: 'Label1'
            Label:
                text: 'Label2'

<Label>:
    font_size: sp(30)

但是,我想根据我的窗口大小更新这个 font_size 值(我知道如何动态更改我只是没有在这里包含所有内容)。但是如何从 python 访问基类小部件的 font_size 属性以便可以更改它?

问题

如何通过 python 完成此更改,以允许我在我的应用程序实例化时更改它?

标签: pythonkivy

解决方案


  1. 为标签添加导入语句,from kivy.uix.label import Label
  2. 为 sp 添加导入语句,from kivy.metrics import sp
  3. 采用Label.font_size = sp(30)

片段 - Python 代码

from kivy.uix.label import Label
from kivy.metrics import sp

class testApp(App):
    def build(self):
        Label.font_size = sp(30)
        return Root_Widget()

输出

图像01


推荐阅读