因此,我已经研究了kivy库了几天,我做了一个简单的应用程序,其中的一些屏幕模拟了SignIn / Register环境。我注意到的是,在我的.kv文件中,当我为小部件设置“全局参数”时,Button参数根本没有变化。看看:
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
Gerencia:
transition: FadeTransition()
TelaDeLogin:
TelaDeCadastro:
TelaEsqueci:
TelaEmDesenvolvimento:
<Button>:
size_hint: 1, 0.1
font_size: 40
color: 1, 1, 1, 1
<Label>:
size_hint: 0.5, 0.1
color: 1, 1, 0, 1
font_size: 40
<TextInput>:
multiline: False
size_hint: 0.5, 0.1
<TelaDeLogin>:
name: "Login"
FloatLayout:
Button:
on_release: app.root.current = "Desenvolvimento"
pos_hint: {'x':0, 'y':0.2}
text: 'Logar'
Button:
on_release: app.root.current = "Esqueci"
pos_hint: {'x':0, 'y':0.1}
text: 'Esqueci a senha'
Button:
on_release: app.root.current = "Cadastro"
pos_hint: {'x':0, 'y':0}
text: 'Cadastre-se'
Label:
text: "Usuário"
pos_hint: {'x':0.25, 'y':0.8}
TextInput:
pos_hint: {'x':0.25, 'y':0.7}
Label:
text: "Senha"
pos_hint: {'x':0.25, 'y':0.6}
TextInput:
password: True
pos_hint: {'x':0.25, 'y':0.5}
我省略了一些其他屏幕,但是它们无关紧要,发生了什么,我做了一些测试,更改“ <“ Button”>”内部的size_hint根本不影响我的Button的大小,它们是显然只是获得一些默认大小。发生的另一件奇怪的事情是,为了测试,我在“ <” Button“>”内部和“ <” Label“>”内部对font_size进行了一些更改,并且我在Label中输入的值也影响了我在屏幕上的Buttons ,颜色也一样。这样看来,我的Button的值是从“ <” Label“>”而不是从“ <” Button>“来获取的。有人知道这是怎么回事吗?
答案 0 :(得分:1)
您已经覆盖了基类Label,而Button是下面的Kivy文档中指定的Label。在您的Kivy App中,Button从您自定义的标签继承了 size_hint , font_size 和 color 。
按钮是带有相关动作的标签,该动作在以下情况下触发 按下按钮(或在单击/触摸后释放按钮)。配置 按钮,相同的属性(填充,font_size等)和大小 系统用于Label类
为Label和Button创建动态类。
Button:
替换为MyButton:
Label:
替换为MyLabel:
<MyButton@Button>:
size_hint: 1, 0.1
font_size: 40
color: 1, 1, 1, 1
<MyLabel@Label>:
size_hint: 0.5, 0.1
color: 1, 1, 0, 1
font_size: 40
...
<TelaDeLogin>:
name: "Login"
FloatLayout:
MyButton:
on_release: app.root.current = "Desenvolvimento"
pos_hint: {'x':0, 'y':0.2}
text: 'Logar'
MyButton:
on_release: app.root.current = "Esqueci"
pos_hint: {'x':0, 'y':0.1}
text: 'Esqueci a senha'
MyButton:
on_release: app.root.current = "Cadastro"
pos_hint: {'x':0, 'y':0}
text: 'Cadastre-se'
MyLabel:
text: "Usuário"
pos_hint: {'x':0.25, 'y':0.8}
TextInput:
pos_hint: {'x':0.25, 'y':0.7}
MyLabel:
text: "Senha"
pos_hint: {'x':0.25, 'y':0.6}
TextInput:
password: True
pos_hint: {'x':0.25, 'y':0.5}