Kivy:BoxLayout vs. GridLayout

时间:2013-08-14 02:16:51

标签: python kivy

BoxLayout(orientation='vertical')GridLayout(cols=1)

他们都做同样的事,不是吗?是否有理由选择其中一个?

1 个答案:

答案 0 :(得分:12)

差异涉及规模和位置。

一般情况下, GridLayoutcols: 1)始终将元素保留在一列中,而可以更灵活地组织单个小部件使用BoxLayoutorientation: 'vertical'

以下是您可以使用BoxLayout执行某项操作的简单示例,因为它尊重pos_hintsizesize_hint(以及center_x之类的其他内容,xyright, - 请注意,它们还取决于影响个人的verticalhorizontal方向BoxLayout窗口小部件:

<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:所以列不会缩小太多