Kivy 自学笔记(二):BoxLayout

2023年1月15日,更新(纠错)中。

声明:1、本文章总结自该系列视频,且为个人用笔记,转载需注明出处。2、让人不适的评论将会被删评+屏蔽。

BoxLayout用于水平(竖直)排列子控件。

一、代码与解释

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout

class BoxLayoutTest(BoxLayout):
    pass

class MyTask(App):
    pass

if __name__ == '__main__':
    MyTask().run()
BoxLayoutTest:

<BoxLayoutTest>:
    # orientation: "vertical" # 定向,默认为水平horizontal
    BoxLayout: # 嵌套了一个竖直排列的子BoxLayout
        orientation: "vertical" 
        size_hint: .5, .8 # 尺寸提示
        pos_hint: {'center_y':.5, 'center_x':.5} # 位置提示
        spacing: '10dp'
        Button: # 子子button
            text: "fxxk U 01"
            size_hint: 1, .5
            color: 1,0,1,1
        Button:
            text: "fxxk U 02"
            size_hint: 1, 1
            color: 1,1,0,1
    Button: # 子button
        text: "fxxk U 1"
        size_hint: None, .5 # 只有尺寸提示某项为None时,才可使用对应的宽高按绝对尺寸控制宽高
        width: '100dp' # 由于尺寸提示宽度部分为None,使用width设定宽度为100dp
        pos_hint: {'center_y':.5}
        color: 1,1,1,1
    Button:
        text: "fxxk U 2"
        size_hint: .5, .5
        color: 0,1,1,1

1、orientation(定向)

BoxLayout的orientation有两种,分别为horizontal和vertical,对应着水平排布和垂直排布。

2、size_hint(尺寸提示)

BoxLayout不可直接使用size、width、height,除非size_hint对应项为None,此时可以用前三者直接定义宽高。size_hint为两个0-1的浮点数,分别对应宽度和高度。以当orientation为horizontal时为例,此时size_hint水平部分为该控件的水平宽度权重,而竖直部分为该控件占BoxLayout总高度的比例。同时,若水平方向有size_hint为None,即存在定义了dp或者像素宽度的情况,则需要先让总宽度减去这部分控件宽度,其余控件再按照各自的size_hint按比例分配剩余宽度。

3、pos_hint(位置提示)

与size_hint不同,pos_hint为一个字典,也分为水平和竖直方向。其中水平方向的key包括’x’, ‘center_x’, ‘right’,均为0-1的浮点数,分别代表控件左侧距最左端的距离,控件中心距最左端的距离,控件右侧距最左端的距离,三者取一即可。竖直方向的key包括’y’, ‘center_y’, ‘top’,其余类似。

注意:①若orientation为horizontal,则pos_hint的水平部分失效,反之同理。②尽管pos_hint字典内部可以同时包含同一方向的不同key(即取了大于一个)且不报错,但具体效果与取的key均不完全相同,为避免意外发生最好不要这么干。

4、spacing(间隔)

使用spacing使不同控件间隔一定距离。

二、运行效果

如下两图,可以看出水平拉伸时中间size_hint的x为None的按钮宽度始终不变。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值