BoxLayout(orientation='vertical')
和GridLayout(cols=1)
都可以实现相同的功能,它们之间有什么区别吗?选择其中一个是否有原因呢?
区别在于大小和位置。
一般来说,GridLayout
(cols: 1
)总是将元素保持在一列中,而当您使用BoxLayout
(orientation: 'vertical'
)时,有更多的灵活性来组织单个小部件。
以下是一个非常简单的示例,您可以使用BoxLayout
进行操作,因为它考虑了pos_hint
、size
和size_hint
(以及其他诸如center_x
、x
、y
、right
等 - 注意它们还取决于BoxLayout
的vertical
或horizontal
方向),这影响单个小部件:
<Test@BoxLayout>:
orientation: 'vertical'
Button:
text: 'a'
size_hint: None, None
size: 100,50
pos_hint: { 'center_x' : .5 }
Button:
text: 'b'
这是在200x200屏幕上的输出:
如果您尝试使用GridLayout
来做同样的事情,那么您会得到这个:
最后,GridLayout
有一些属性可以控制列的大小:
col_default_width
: 所有列的默认宽度col_width
: 每列的宽度列表(在这种情况下没有用,因为我们只有一列)col_force_default
: 忽略单个小部件的任何现有size_hint
或size
并强制列宽minimum_width
: 以便列不会缩小太多