我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
QGridLayout 表格布局
set xxxx MinimumWidth()
set xxxx Stretch()
QGridLayout(QWidget)
QGridLayout()
# 添加子控件,每行添加一个
addWidget(self, QWidget)
# 将子控件添加到指定行和列的位置,并可以设置对齐方式
addWidget(self, QWidget, int, int, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment())
# 合并单元格模式。将子控件添加到指定开始行和开始列,指定合并多少行、多少列,并设置对齐方式
addWidget(self, QWidget, int, int, int, int, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment())
# 将子布局添加到指定行和列的位置,并可以设置对齐方式
addLayout(self, QLayout, int, int, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment())
# 合并单元格模式。将子布局添加到指定开始行和开始列,指定合并多少行、多少列,并设置对齐方式
addLayout(self, QLayout, int, int, int, int, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment())
getItemPosition(self, int) -> Tuple[int, int, int, int] # 获取指定第几个条目位置(根据添加顺序)
# 返回一个元组[所在行索引, 所在列索引, 占据行数, 占据列数]
itemAtPosition(self, int, int) -> QLayoutItem # 获取指定行和列所在位置的条目
QLayoutItem.widget() # 获取条目中的控件对象
QLayoutItem.widget().text() # 获取条目中控件的文本信息
QLayoutItem.layout() # 获取条目中的布局管理器对象
setColumnMinimumWidth(self, int, int) # 设置指定索引列的最小列宽
setColumnStretch(self, int, int) # 设置指定索引列的伸缩因子
columnMinimumWidth(self, int) -> int # 获取指定索引列最小宽度
setColumnStretch(self, int, int) # 获取指定索引列伸缩因子
setRowMinimumHeight(self, int, int) # 设置指定索引行的最小行高
setRowStretch(self, int, int) # 设置指定索引行的伸缩因子
rowMinimumHeight(self, int) -> int # 获取指定索引行最小高度
rowStretch(self, int) -> int # 获取指定索引行伸缩因子
setVerticalSpacing(self, int) # 设置垂直方向间距(行间距)
verticalSpacing()->int # 获取垂直方向间距,当垂直方向间距不一致时,返回-1
setHorizontalSpacing(self, int) # 设置水平方向间距(列间距)
horizontalSpacing()->int # 获取水平方向间距,当水平方向间距不一致时,返回-1
setSpacing(self, int) # 同时设置水平方向和垂直方向间距
spacing()->int # 获取水平和垂直方向间距,当水平和垂直方向间距不一致时,返回-1
setOriginCorner(self, Qt.Corner) # 设置用于网格原点的角,即位置 (0, 0)
# 参数:Qt.Corner
# Qt.TopLeftCorner # 矩形的左上角(默认)。
# Qt.TopRightCorner # 矩形的右上角
# Qt.BottomLeftCorner # 矩形的左下角
# Qt.BottomRightCorner # 矩形的右下角
rowCount(self) -> int # 获取总行数
columnCount(self) -> int # 获取总列数
cellRect(self, int, int) -> QRect # 获取指定单元格
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QGridLayout-功能作用')
self.resize(350, 180)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
g_layout = QGridLayout()
self.setLayout(g_layout)
btn1 = QPushButton('按钮1')
btn2 = QPushButton('按钮2')
btn3 = QPushButton('按钮3')
btn4 = QPushButton('按钮4')
btn5 = QPushButton('按钮5')
btn6 = QPushButton('按钮6')
btn7 = QPushButton('按钮7')
btn8 = QPushButton('按钮8')
btn9 = QPushButton('按钮9')
# f_layout = QFormLayout()
# f_layout.addRow(btn8, btn9)
# f_layout = QHBoxLayout()
# f_layout.addWidget(btn8)
# f_layout.addWidget(btn9)
# 添加子控件/子布局
# g_layout.addWidget(btn1, 0, 0)
# g_layout.addWidget(btn4, 1, 0, 1, 3)
# g_layout.addWidget(btn2, 0, 1)
# g_layout.addWidget(btn3, 0, 2)
# g_layout.addWidget(btn5, 2, 0)
# g_layout.addWidget(btn6, 2, 1)
# g_layout.addWidget(btn7, 2, 2)
# g_layout.addLayout(f_layout, 3, 0, 1, 3)
# 按添加顺序获取控件所在的行号、列号,占用行数、列数
# print(g_layout.getItemPosition(1))
# 获取指定行、列所在位置的条目
# print(g_layout.itemAtPosition(0, 0))
# 通过条目获取条目中的控件及文本内容
# print(g_layout.itemAtPosition(0, 0).widget().text())
# 通过条目获取条目中的子布局
# print(g_layout.itemAtPosition(3, 0).layout())
# 给指定列设置最小列宽
# g_layout.setColumnMinimumWidth(0, 150)
# g_layout.setColumnMinimumWidth(1, 250)
# 给指定列设置伸缩因子
# g_layout.setColumnStretch(0, 1)
# g_layout.setColumnStretch(1, 2)
# g_layout.setColumnStretch(2, 3)
# 给指定行设置最小行高
# g_layout.setRowMinimumHeight(0, 100)
# g_layout.setRowMinimumHeight(1, 200)
# 给指定行设置伸缩因子
# g_layout.setRowStretch(0, 1)
# g_layout.setRowStretch(1, 2)
# g_layout.setRowStretch(2, 3)
# g_layout.setRowStretch(3, 4)
# 设置垂直方向间距
# g_layout.setVerticalSpacing(20)
#
# # 设置水平方向间距
# g_layout.setHorizontalSpacing(20)
# 原点角设置
btn_ls = [btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9]
for i in range(len(btn_ls)):
row = i // 3
col = i % 3
g_layout.addWidget(btn_ls[i], row, col)
# g_layout.addWidget(btn1, 0, 0)
# g_layout.addWidget(btn2, 0, 1)
# g_layout.addWidget(btn3, 0, 2)
# g_layout.addWidget(btn4, 1, 0)
# g_layout.addWidget(btn5, 1, 1)
# g_layout.addWidget(btn6, 1, 2)
# g_layout.addWidget(btn7, 2, 0)
# g_layout.addWidget(btn8, 2, 1)
# g_layout.addWidget(btn9, 2, 2)
g_layout.setOriginCorner(Qt.TopLeftCorner)
# g_layout.setOriginCorner(Qt.TopRightCorner)
# g_layout.setOriginCorner(Qt.BottomLeftCorner)
# g_layout.setOriginCorner(Qt.BottomRightCorner)
# 信息获取
print(g_layout.rowCount()) # 获取总行数
print(g_layout.columnCount()) # 获取总列数
print(g_layout.cellRect(1, 2)) # 获取指定单元格对象
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())