如何使用kivymd将space按钮从屏幕中心均匀分布在一列中

How to space buttons from the center of the screen evenly in a column with kivymd

我是 kivy/kivymd 的新手,我在屏幕内定位按钮(或任何其他小部件)方面遇到了很多困难。不知何故,我发现它不直观。为了获得更好的感觉,我正在做几个我想解决的小练习。

现在,我想解决以下问题:

我可以使用相对布局,但我希望我可以使用方框 layout/grid 布局。我想“动态”添加一个新按钮。然而,顶部和底部的间距应该非常相似。如果我尝试盒子布局,按钮都在底部。即使我更改了布局的完整位置(也没有很好地记录...)。

例如:

#:kivy 2.1.0

MDBoxLayout:
    orientation: "vertical"
    pos: 0,root.height-(root.height*0.5)

    MDFillRoundFlatButton:
        text: "button 1"
        pos_hint: {"center_x":.5}


    MDFillRoundFlatButton:
        text: "button 2"
        pos_hint: {"center_x":.5}


    MDFillRoundFlatButton:
        text: "button 3"
        pos_hint: {"center_x":.5}
        

    MDFillRoundFlatButton:
        text: "button 4"
        pos_hint: {"center_x":.5}

进入以下屏幕:

按钮 4 位于屏幕的“中央”。但是,按钮 2 和 3 之间的中心应该在屏幕的中心。

有没有简单的方法可以解决这个问题?或者我需要计算所有按钮的位置并通过相对布局分配它们?

感谢您的帮助!

您可以使用 MDBoxLayout 的属性来获得您想要的。 spacingButtons 之间设置了 space。 adaptive_height 允许 MDBoxLayout 增长以适应所有 Buttonspos_hint 确保 MDBoxLayout 垂直居中:

MDBoxLayout:
    orientation: "vertical"
    pos_hint: {'center_y':0.5}
    adaptive_height: True
    spacing: 20