Kv语言(kivy)中的变量

Variables in Kv language (kivy)

我的 Kivy 语言文件有许多 font_size 属性,所有属性都具有相同的值,是否可以在 KV lang 中分配一个变量? 当前 KV 文件样本:

#User ID
    Label:
        text: 'User ID'
        font_size: 20
        text_size: self.size

    TextInput:
        id: userid
        font_size: 20


    #User PW
    Label:
        text: 'Password'
        font_size: 20
        text_size: self.size

    TextInput:
        id: password
        password: True
        font_size: 20

    Button:
        text: 'Login'
        font_size: 20

是否可以像这样设置它:

#User ID
    @fs: 20
    Label:
        text: 'User ID'
        font_size: fs
        text_size: self.size

    TextInput:
    id: userid
    font_size: fs


#User PW
Label:
    text: 'Password'
    font_size: fs
    text_size: self.size

TextInput:
    id: password
    password: True
    font_size: fs

Button:
    text: 'Login'
    font_size: fs

通过这样做,我将能够仅通过更改 FS 变量值来立即更改字体大小,而且,类似的解决方案可能会帮助我更快地创建基于主题的文件。谢谢。

I would be able to change the font size at once only by changing the FS variable value,

您可以使用 #:set name value 设置一个值,但这并不是您想要的。由于您希望更新变量,因此您应该使用 kivy 属性 以便事件系统为您处理。

在这种情况下,由于您希望很多不同的东西都取决于这样的大小,例如您可以使用应用程序的 属性 class。

class YourApp(App):
    font_size = NumericProperty(20)

然后在kv

font_size: app.font_size

对应用程序实例 font_size 的任何更改都会自动传播到这些 kv 规则。

是的,有办法。你要找的是这个表达式:

#:set name value

可以看文档here

您的 .kv 文件:

#User ID
    #:fs 20
    Label:
        text: 'User ID'
        font_size: fs
        text_size: self.size

    TextInput:
    id: userid
    font_size: fs


#User PW
Label:
    text: 'Password'
    font_size: fs
    text_size: self.size

TextInput:
    id: password
    password: True
    font_size: fs

Button:
    text: 'Login'
    font_size: fs