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_horizo​​ntal, 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 将小部件与顶部边框对齐的主要内容,如果未能解决你的问题,请参考以下文章

Kivy 布局高度以适应子小部件的高度

Kivy ScreenManager 打破 BoxLayout

Kivy:BoxLayout 与 GridLayout

带有boxlayout的kivy滚动视图

在 kivy 小部件之间交换变量

Kivy 语言可以访问继承的布局和小部件吗?