Kivy:BoxLayout 与 GridLayout

Posted

技术标签:

【中文标题】Kivy:BoxLayout 与 GridLayout【英文标题】:Kivy: BoxLayout vs. GridLayout 【发布时间】:2013-08-15 20:13:17 【问题描述】:

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

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

【问题讨论】:

BoxLayout probably 在幕后要做的工作较少......但我可以想象它的边缘。所以,顺其自然吧。我个人认为垂直 boxlayout 更好地描述了它是什么。 【参考方案1】:

差异涉及大小和位置。

一般来说,GridLayout (cols: 1) 总是将元素保持在一列中,而使用BoxLayout 时可以更灵活地组织单个小部件(orientation: 'vertical').

这是一个非常简单的示例,您可以使用 BoxLayout 执行某些操作,因为它支持 pos_hintsizesize_hint(以及其他例如 center_xxy、@ 987654334@, - 注意它们还依赖于verticalverticalhorizontal 方向,这会影响各个小部件:

<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_hintsize 并强制列宽 minimum_width: 所以列不会缩小太多

【讨论】:

以上是关于Kivy:BoxLayout 与 GridLayout的主要内容,如果未能解决你的问题,请参考以下文章

带有boxlayout的kivy滚动视图

Kivy \\ 如何将按钮绑定到 boxlayout 的底部

Kivy:如何从自定义 BoxLayout 显示 ScrollView?

Kivy ScreenManager 打破 BoxLayout

python Kivy BoxLayout设置高度等于儿童身高

Kivy 标签和弹出窗口 + 长文本