无法理解 size_hint。为啥这个 .kv 简单的代码不能像我预期的那样工作?
Posted
技术标签:
【中文标题】无法理解 size_hint。为啥这个 .kv 简单的代码不能像我预期的那样工作?【英文标题】:Can't understand size_hint. Why this .kv simply code doesn't work as i expected?无法理解 size_hint。为什么这个 .kv 简单的代码不能像我预期的那样工作? 【发布时间】:2018-07-20 12:45:27 【问题描述】:我正在学习 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。 我不明白如果
大小提示
与窗口的尺寸或包含该小部件的“父”的尺寸相关联
【问题讨论】:
【参考方案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 的更多信息。
【讨论】:
谢谢,我已经解决了在底部添加标签以上是关于无法理解 size_hint。为啥这个 .kv 简单的代码不能像我预期的那样工作?的主要内容,如果未能解决你的问题,请参考以下文章