重点是 一个grid布局的setSpacing方法,作用是设置各个组件之间的间隙(空格),
然后是grid布局的addWidget方法的后两个参数不设置的话默认是1, 1,即是row方向填充1, column方向填充1(也就是没填充), 如果设置成别的就相当于填充了, 填充了之后相当于和其他跨度为1的组件在某方向上的变化了多少倍(大概是这样).
代码:
# coding='utf-8'
from PyQt5.QtWidgets import QWidget,\
QApplication, QLabel, QTextEdit, QGridLayout, QLineEdit
import sys
class Gui(QWidget):
def __init__(self):
super(Gui, self).__init__()
self.start()
def start(self):
# 所有的label
labels = [
QLabel('标题'),
QLabel('作者'),
QLabel('内容'),
]
# 所有的行编辑器
line_edits = [
QLineEdit(),
QLineEdit(),
]
# 所有的多行编辑器
text_edits = [
QTextEdit()
]
# 实例化表格布局
grid = QGridLayout()
# 设置组件之间的空格为10个像素
grid.setSpacing(10)
# 放置第一行的组件,没有跨度
grid.addWidget(labels[0], 1, 0)
grid.addWidget(line_edits[0], 1, 1)
# 放置第二行的组件,也没有跨度
grid.addWidget(labels[1], 2, 0)
grid.addWidget(line_edits[1], 2, 1)
# 放置第三行的组件,组件在row方向上有跨度,\
# 跨度是row跨5行(是前面的5倍),column跨1行(和前面一样了)
grid.addWidget(labels[2], 3, 0)
grid.addWidget(text_edits[0], 3, 1, 5, 1)
# 将QWidget的布局设置成grid布局
self.setLayout(grid)
# 设置具体的位置和大小
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('gird跨多行')
self.show()
win = QApplication(sys.argv)
gui = Gui()
sys.exit(win.exec_())
运行结果:
image.png