Kivy:BoxLayout与GridLayout的区别

6

BoxLayout(orientation='vertical')GridLayout(cols=1)都可以实现相同的功能,它们之间有什么区别吗?选择其中一个是否有原因呢?


BoxLayout 应该在幕后进行的工作量__可能会__更少...但我想这差别微不足道。所以,按照自然感觉去做吧。我个人认为,垂直 BoxLayout 更能描述其含义。 - Joran Beasley
1个回答

19

区别在于大小和位置。

一般来说,GridLayoutcols: 1)总是将元素保持在一列中,而当您使用BoxLayoutorientation: 'vertical')时,有更多的灵活性来组织单个小部件。

以下是一个非常简单的示例,您可以使用BoxLayout进行操作,因为它考虑了pos_hintsizesize_hint(以及其他诸如center_xxyright等 - 注意它们还取决于BoxLayoutverticalhorizontal方向),这影响单个小部件:

<Test@BoxLayout>:
    orientation: 'vertical'
    Button:
        text: 'a'
        size_hint: None, None
        size: 100,50
        pos_hint: { 'center_x' : .5 }
    Button:
        text: 'b'

这是在200x200屏幕上的输出:

BoxLayout with vertical orientation

如果您尝试使用GridLayout来做同样的事情,那么您会得到这个:

GridLayout with cols: 1

最后,GridLayout有一些属性可以控制列的大小:

  • col_default_width: 所有列的默认宽度
  • col_width: 每列的宽度列表(在这种情况下没有用,因为我们只有一列)
  • col_force_default: 忽略单个小部件的任何现有size_hintsize并强制列宽
  • minimum_width: 以便列不会缩小太多

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接