Kv语言中的变量(kivy)

时间:2015-01-31 19:35:35

标签: 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变量值来立即更改字体大小,同样,类似的解决方案可以帮助我更快地创建基于主题的文件。谢谢。

2 个答案:

答案 0 :(得分:6)

  

我只能通过更改FS变量值

来立即更改字体大小

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

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

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

然后在kv

font_size: app.font_size

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

答案 1 :(得分:1)

是的,有办法。您正在寻找的是这个表达式:

#: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