Kv语言中的变量(kivy)

sur*_*van 2 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
Run Code Online (Sandbox Code Playgroud)

有可能设置它有点像这样:

#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
Run Code Online (Sandbox Code Playgroud)

通过这样做,我只能通过更改FS变量值来立即更改字体大小,同样,类似的解决方案可以帮助我更快地创建基于主题的文件.谢谢.

inc*_*ent 6

我只能通过更改FS变量值来立即更改字体大小,

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

在这种情况下,由于你需要很多不同的东西来依赖于这样的大小,你可以使用你的app类的属性.

class YourApp(App):
    font_size = NumericProperty(20)
Run Code Online (Sandbox Code Playgroud)

然后在kv

font_size: app.font_size
Run Code Online (Sandbox Code Playgroud)

然后,对App实例的font_size的任何更改都将自动传播到这些kv规则.