Kivy BoxLayout 将小部件与顶部边框对齐
Posted
技术标签:
【中文标题】Kivy BoxLayout 将小部件与顶部边框对齐【英文标题】:Kivy BoxLayout align widgets to the top border 【发布时间】:2015-09-28 05:54:09 【问题描述】:我正在使用以下 Kivy 代码创建带有按钮的 BoxLayout:
BoxLayout:
orientation: "vertical"
width: 200
size_hint_x: None
Button:
size_hint_y: None
height: 30
text: 'btn1'
Button:
size_hint_y: None
height: 30
text: 'btn2'
Button:
size_hint_y: None
height: 30
text: 'btn3'
但是按钮粘在底部边缘,我怎样才能将它们推向布局的顶部边缘?
【问题讨论】:
试试:BoxLayout: size: root.size
@bigOTHER 我不想将此布局缩放到父小部件的大小,它似乎没有帮助。
【参考方案1】:
你也可以在最后放一个空的Widget来占用空间。
BoxLayout:
orientation: "vertical"
width: 200
size_hint_x: None
Button:
size_hint_y: None
height: 30
text: 'btn1'
Button:
size_hint_y: None
height: 30
text: 'btn2'
Button:
size_hint_y: None
height: 30
text: 'btn3'
Widget:
【讨论】:
【参考方案2】:可以为此使用StackLayout,以确保按钮从上到下。
您也可以尝试在 BoxLayout 中使用填充
来自 kivy BoxLayout 文档:
布局框和子元素之间的填充:[padding_left, padding_top, padding_right, padding_bottom]。
padding 也接受两个参数形式 [padding_horizontal, padding_vertical] 和一个参数形式 [padding]。
在 1.7.0 版中更改:将 NumericProperty 替换为 变量列表属性。
padding 是一个 VariableListProperty,默认为 [0, 0, 0, 0]。
例如,你的可能看起来像:
BoxLayout:
orientation: "vertical"
width: 200
size_hint_x: None
padding: 0, 0, 0, bottom_padding_here
您将其设置为什么,以便它始终将按钮放置在正确的位置,无论屏幕大小如何,都是另一回事。但我相信完全可行。
如果您稍后要添加或删除按钮,您需要调整填充等。
【讨论】:
我已经尝试过填充,但是你需要指定准确的值,否则按钮会被推得太远。所以每次都计算不方便。 但是 StackLayout 好像还不错,我觉得你应该把它放在你的回答上面。 我同意 StackLayout 应该是最佳答案。以上是关于Kivy BoxLayout 将小部件与顶部边框对齐的主要内容,如果未能解决你的问题,请参考以下文章