一 头文件加载
本文内容为PyQt5中的布局管理。具体内容为:
1.绝对布局
布局类
1.水平布局(QHBoxLayout)和垂直布局(QVBoxLayout)
2.网格布局(QGridLayout)
3.表单布局(QFormLayout)
4.嵌套布局
5.布局管理器QSplitter
二 绝对布局
绝对布局主要用到两个方法,分别是move()和setGeometry()。
绝对布局的优点:
可以直接定位每个控件的位置
绝对布局的缺点:
如果改变一个窗口的大小,窗口中控件的大小和位置不会随之改变
所生成的窗口在不同的操作系统下看起来可能不一样
在程序中改变字体时可能会破坏布局
如果修改布局,比如新增一个控件,就必须全部重新布局,既烦琐又费时
三 布局类
3.1 水平布局(QHBoxLayout)和垂直布局(QVBoxLayout)
本小节涉及到的方法及其描述如下:
方法
addLayout(self, QLayout, stretch = 0)
在窗口中添加布局,stretch为伸缩量,默认为0
addWidget(self, QWidget, stretch, Qt.Alignment alignment)
在布局中添加控件,stretch为伸缩量,alignment为对齐方式
addSpacing(self, int)
添加伸缩量,具体使用方法见下面的例子
对齐方式Qt.Alignment可能取值有:
参数
Qt.AlignLeft
水平居左对齐
Qt.AlignRight
水平居右对齐
Qt.AlignCenter
水平居中对齐
Qt.AlignJustify
水平两端对齐
Qt.AlignTop
垂直靠上对齐
Qt.AlignBottom
垂直靠下对齐
Qt.AlignVCenter
垂直居中对齐
3.2网格布局(QGridLayout)
网格布局需要用到的方法及其描述如下。
方法
addWidget(QWidget widget, int row, int col, int alignment = 0)
给网格布局添加控件。
widget:要添加的控件
row:位置所在行
col:位置所在列
alignment:对齐方式
addWidget(QWidget widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, int alignment)
当所添加的控件跨越多行或多列时,使用这个函数
fromRow:起始行
fromColumn:起始列
rowSpan:控件跨越的行
columnSpan:控件跨越的列
setSpacing(int spacing)
设置控件在水平和垂直方向的间隔
3.3 表单布局(QFormLayout)
QFormLayout是label-field式的表单布局,顾名思义,就是实现表单方式的布局。表单是提示用户进行交互的一种模式,其主要由两列组成,第一列用于显示信息,给用户提示,一般叫做label域;第二列需要用户进行选择或者输入,一般叫做field域。label与field的关系就是label关联field。
QFormLayout需要用到addRow(label, field)方法。
3.4 嵌套布局
所谓嵌套布局就是综合应用上述的布局进行嵌套以完成整体窗口的布局。
3.5 布局管理器QSplitter
PyQt提供了一个特殊的布局管理器QSplitter,它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器。
与QSplitter相关的方法及其描述如下。
方法
addWidget()
将控件添加到QSplitter管理器的布局中
indexOf()
返回控件在QSplitter管理器中的索引
insertWidget()
根据索引将一个控件插入到QSplitter管理器中
setOrientation()
设置布局方法
Qt.Horizontal:水平方向
Qt.Vertical:垂直方向
setSizes()
设置控件的初始化大小
count()
返回小控件在QSplitter管理器中的数量