我正在学习Kivy图书馆,但我遇到了一些问题。 我尝试做一个简单的屏幕更改应用程序以进行一些练习但我在这里做了一些错误我认为:
BoxLayout: orientation:"horizontal" size_hint:1,0.5 Label : text : "Nome :" TextInput : id : _name multiline: False Label : text : "Cognome :" TextInput : id : _surname multiline: False
代码是:
<ROT>:
FloatLayout:
AnchorLayout:
anchor_y : "top"
anchor_x: "right"
BoxLayout:
orientation : "horizontal"
spacing: 10
size_hint: 0.4,0.1
Button:
id : "_bfr"
text : "<-----"
Button:
id : "_aft"
text : "----->"
AnchorLayout :
anchor_x : "center"
anchor_y : "bottom"
ScreenManager:
size_hint_y : 0.9
id : _manager
Screen :
name : "uno"
BoxLayout :
padding :50
spacing :10
orientation : "vertical"
BoxLayout:
orientation:"horizontal"
size_hint:1,0.5
Label :
text : "Nome :"
TextInput :
id : _name
multiline: False
Label :
text : "Cognome :"
TextInput :
id : _surname
multiline: False
我希望最后写的boxlayout是包含它的屏幕的1/2。
我无法理解size_hint
与窗口的维度或&#34; parent&#34;的维度相关联。包括该小部件
答案 0 :(得分:1)
Size_hints通常引用您的父窗口小部件。在这种情况下,BoxLayout是你的ScreenManager的0.5,这是你窗口的0.9。在这种情况下,BoxLayout垂直占您窗口的45%。
如果您希望BoxLayout占据屏幕的50%,则可以引用根小部件大小(包含在箭头中的顶级父级)
size_hints通常引用直接父窗口小部件。但是,您可以通过编写以下内容直接引用根窗口小部件(包含在箭头中的顶部窗口小部件)来更改此设置:
<Root>:
WidgetLayout1:
size_hint: .2, .2
BoxLayout:
size_hint: root.width, root.height / 2
在这种情况下,BoxLayout比其父级大,因为它的大小等于根小部件的整个宽度,高度的一半。
但是在您的示例中,您的第二个框位于另一个具有填充和间距的BoxLayout中,它有自己的间距和大小调整规则,可能会超出您自己定义的大小提示。更不用说AnchorLayout的其他规则会进一步限制你进一步限制屏幕的某些区域。
您可以在此处详细了解BoxLayout。