Python-PyQt5开发学习笔记(二):Layout(布局)

本文简单的介绍一下Qt designer软件中对于控件布局的一些方法。

      在对这类知识进行学习时,不用对其定义(如:什么叫布局?)进行死板的记忆,操作方法和使用固然重要,但不能光学“术”而不识“道”,最好还是能在脑海中对其有一个清晰的认知,能用自己的表达方式对其进行阐述,这样学习会更加系统。那什么是Qt Designer中的布局?我认为是:为了使最终窗口的控件间位置整体美观,并能使一组同类型的控件按其类型进行合理安排,对控件的位置及属性进行设置的操作。


目录

1.基本布局

(1)Vertical Layout、Horizontal Layout

(2)Grid Layout

  (3)Form Layout

2.绝对布局和容器布局

(1)绝对布局

(2)容器布局

3.sizePolicy(尺寸策略)


1.基本布局

基本的布局有:

Vertical Layout(垂直布局)

Horizontal Layout(水平布局)

Grid Layout(栅格布局)

Form Layout(表单布局)

基本布局是对一组控件的相对位置进行操作,让其布局范围内的控件按对应方式进行布局。

(1)Vertical Layout、Horizontal Layout

垂直布局于水平布局基本相同,以垂直布局举例。垂直布局是指让布局范围内的控件按垂直的布局格局进行布局。选中垂直布局键拖拽进创建的窗口中后会出现一个布局范围,该布局范围可拖拽调整,放进布局范围的控件就会按照垂直方向进行布局。

Python-PyQt5开发学习笔记(二):Layout(布局)

或者,可以在已经放入了控件后,选定需要布局的控件右键选择布局->垂直布局。效果相同。

Python-PyQt5开发学习笔记(二):Layout(布局)

垂直布局及水平布局主要是用于对整个窗口的大格局进行控制。


Spacers(间隔)和(水平)垂直分割线的使用:
这两类控件用在(水平)垂直布局中使用比较多,故在此简单介绍一下:
Spacers分为Horizontal Spacer(水平间隔)和Vertical Spacer(垂直间隔):可在控件之间加入间隔,间隔也是一个控件,占相应的位置,其大小也可通过右侧属性表中更改参数进行更改,在更改时将sizeType后的参数改为Fixed。间隔控件在最后其不会在窗口上显示出来。

分割线分为Horizontal line和Vertical line,其也是一个控件,其属性可以在属性表中进行更改,常见的可以在QFrame下的frameshadow对样式进行更改、linewidth对线条宽度进行更改。最后会在控件之间显示一条直线。

示例如下:

Python-PyQt5开发学习笔记(二):Layout(布局)

效果为:

Python-PyQt5开发学习笔记(二):Layout(布局)


(2)Grid Layout

栅格布局是对控件进行栅格状的格式控制,使之以行和列对控件位置进行控制(计算器按键的布局即应该采用栅格布局)。布局方式同样可以首先设置布局范围再向其中添加控件或者选中控件右键选择布局->栅格布局。在对其进行栅格布局的时候需要注意:你在对控件进行摆放时,要尽可能的摆放成栅格状,不应摆放过于凌乱,否则选中布局时可能会导致无法正常识别。

如下:

Python-PyQt5开发学习笔记(二):Layout(布局)

结果为:

Python-PyQt5开发学习笔记(二):Layout(布局)

(3)Form Layout

表单布局反应两个控件的一一对应关系。在水平方向,表单布局在水平方向上应该放置也只能放置两个控件,表示这两个控件间一一对应的关系。示例如下:左边为label标签,右边为文本编辑框或者按钮。

Python-PyQt5开发学习笔记(二):Layout(布局)

值得注意的是:表单布局不能通过选定右键进行布局设置。

2.绝对布局和容器布局

(1)绝对布局

绝对布局是通过对控件的属性表中数据进行更改,从而对控件进行定量的处理,其控件的所有可更改的属性都可以通过属性表进行更改。在更改时通过左键单点选中控件,属性表所展示的即为当前选中的控件的属性。

Python-PyQt5开发学习笔记(二):Layout(布局)

控件尺寸的最大值与最小值:对应属性表中minimumSize和 maximumSize,是指你在对控件进行拖动以变换控件大小时的尺寸变化范围

(2)容器布局

即在Container(容器)中进行布局,容器是一种可以包含其他多种控件的一种控件,其主要是将一类控件或者功能相似的控件放入一个容器中,对这一组控件进行统一的安排和控制,在容器中亦可进行垂直布局、水平布局和栅格布局。

示例:首先在主窗口创造一个容器(此处选择containers -> Frame)——往容器中添加控件——选择布局。

Python-PyQt5开发学习笔记(二):Layout(布局) 结果如下:Python-PyQt5开发学习笔记(二):Layout(布局)

3.sizePolicy(尺寸策略)

sizePolicy(尺寸策略):控件的尺寸策略我将其理解为控件在各个方向上的表现方式。尺寸策略是下包含水平策略、垂直策略、水平伸展、垂直伸展。水平策略和垂直策略可选的模式有很多,常用的有:

Fixed:设定。给定(水平)垂直伸展数值,改变其存在方式。

Expanding:扩张。自适应扩展。

Preferred:择优。

Minimum(Maxmum):按控件的最小(大)值表示。


sizeHint(期望尺寸):每种控件都有一个期望尺寸,即这个控件的建议尺寸,即默认尺寸。绝大多是的控件的默认尺寸是只读的,不可更改。


使用尺寸策略进行布局的简单示例:
1.选择水平布局,范围框选整个窗口。

Python-PyQt5开发学习笔记(二):Layout(布局)

2.先放入一个Item View下的list View,此时它会充满这个布局。因为它的水平策略为expanding.

Python-PyQt5开发学习笔记(二):Layout(布局)

3.往右侧放入一个容器-面板(Frame),因为其策略为择优,故被挤到边上。

Python-PyQt5开发学习笔记(二):Layout(布局)

此时将Frame的水平策略改为expanding。两个控件都为expanding,故平分窗口,效果如下:
Python-PyQt5开发学习笔记(二):Layout(布局)

4. 更改两个控件所占比例,选中Frame,水平伸展输入3,选择list View水平布局输入2。则在水平方向,Frame占窗口的3/(3+2),list View占窗口的2/(3+2)。垂直方向同理。效果如下:

Python-PyQt5开发学习笔记(二):Layout(布局)

5. 在Frame中设置控件,此处使用 label 和 line text 表单布局做示例。

Python-PyQt5开发学习笔记(二):Layout(布局)

预览效果如下:

Python-PyQt5开发学习笔记(二):Layout(布局)

 


学习笔记仅供参考,若有错误之处望留言指正!


 

上一篇:python-gui编程pyqt5视频


下一篇:Error: one input ui-file must be specified 已经解决