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