【问题标题】:Kivy BoxLayout align widgets to the top borderKivy BoxLayout 将小部件与顶部边框对齐
【发布时间】: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 我不想将此布局缩放到父小部件的大小,它似乎没有帮助。

标签: python kivy


【解决方案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 应该是最佳答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2017-02-18
    • 2011-12-30
    • 2012-05-03
    • 2020-11-16
    • 2018-08-14
    相关资源
    最近更新 更多