Kivy:BoxLayout vs. GridLayout

Noo*_*bot 4 python kivy

BoxLayout(orientation='vertical')对比GridLayout(cols=1):

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

tot*_*ico 12

差异涉及规模和位置.

通常,GridLayout(cols: 1)总是将元素保存在一列中,而在使用BoxLayout(orientation: 'vertical')时组织单个小部件的灵活性更大.

下面是一些你可以用做一个很简单的例子BoxLayout,因为它给予荣誉pos_hint,size并且size_hint(和其他如center_x,x,y,right, -通知他们还取决于verticalhorizontal取向BoxLayout),这影响个别部件:

<Test@BoxLayout>:
    orientation: 'vertical'
    Button:
        text: 'a'
        size_hint: None, None
        size: 100,50
        pos_hint: { 'center_x' : .5 }
    Button:
        text: 'b'
Run Code Online (Sandbox Code Playgroud)

这是200x200屏幕中的输出:

BoxLayout垂直方向

如果你尝试做同样的事情,而是使用GridLayout,那么你得到这个:

带cols的GridLayout:1

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

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

  • 你在pos_hint的末尾忘记了一个"`",这让我发疯了...... (2认同)