pyqt5-如何设置盒子布局的空白和拉伸

2025-11-21 00:55:34

1、创建父窗口控件:

①创建文件-test3.py;

②导入模块,PyQt5.Qt, sys;

③定义控件类 MyToot,设置初始值。

----定义setup_ui()方法,在构造函数中调用;

----定义一个test()方法,在setup_ui()中调用,

④实例应用程序对象,窗口类对象,并展示窗口;

pyqt5-如何设置盒子布局的空白和拉伸

2、实例盒子布局对象,:layout_box = QBoxLayout(2, self)

并添加3个label 控件;

pyqt5-如何设置盒子布局的空白和拉伸

1、给两个控件间添加空白:addSpacing(p_int) ,

如图,给 lb1, lb2之间 添加宽度为50的空白。

注:添加的空白在父窗口缩放时宽度是不会改变的。

pyqt5-如何设置盒子布局的空白和拉伸

2、插入空白:insertSpacing(p_int, p_int_1)

参数 p_int 是布局的位置索引, p_int_1 空白宽度(或高度)。

注:插入的空白在父窗口缩放时宽度(或高度)是不会改变的。

pyqt5-如何设置盒子布局的空白和拉伸

1、控件加入布局时设置拉伸:

在 addWidget(QWidget),insertLayout(p_int, QLayout),方法中都有一个关键字参数,stretch;就是设置控件的拉伸,默认值是0。

例如图:在盒子布局中有三个控件都设置了参数拉伸比,

layout_b.addWidget(pt1,stretch=7)


layout_b.addWidget(pt2,stretch=3
layout_b.insertLayout(0,ly,stretch=1)

注意,控件默认缩小到系统建议的尺寸(例如文本的宽度),所以缩小时,到最小尺寸,控件比例会不同。

pyqt5-如何设置盒子布局的空白和拉伸

2、布局添加空白拉伸:addStretch(stretch=0)

①这等于说是给控件间添加了一个空白控件,并把它两边,或上下的控件向两端推,像弹簧一样。

②它与添加空白的区别就在于,拉伸的宽或高是可变的,而添加空白的宽度或高度是不变的。例如图。

pyqt5-如何设置盒子布局的空白和拉伸

3、拉伸的注意事项:

①布局在添加控件时的拉伸默认为 stretch=0;

②给布局添加的拉伸,会优先于控件占取布局的空白。

所以假如,控件没有设置拉伸,而控件中间又添加了拉伸的空白,那么控件将被排挤到最小。

例如如图:

可以看到,在标签控件 (拉伸为默认值0 )中间,添加拉伸后,即使拉伸是默认的0,也会把标签控件排挤到最小。

pyqt5-如何设置盒子布局的空白和拉伸

4、给控件设置拉伸因数:setStretchFactor(QWidget, int) 

①第一个参数是控件,第二个参数是拉伸因数。

②如图,给lb1设置拉伸因数10,而其他的控件与空白都是0,所以lb1,占据了所有空白。即使拉伸因数设置为1,也会占据所有空白。

pyqt5-如何设置盒子布局的空白和拉伸

5、当一个布局里嵌套了一个子布局时,给子布局设置拉伸因数:

setStretchFactor(QLayout, int)

第一参数是,子布局,第二参数拉伸因数。

如图,

①给layout_box,添加一个垂直布局,有两个按钮控件。

②给子布局设置了拉伸因子后,其才会跟随窗口缩放。

pyqt5-如何设置盒子布局的空白和拉伸

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢