- PyQt 教程
- PyQt - 首页
- PyQt - 简介
- PyQt - 环境搭建
- PyQt - Hello World
- PyQt - 主要类
- PyQt - 使用 Qt Designer
- PyQt - 元对象
- PyQt 信号与槽
- PyQt - 信号和槽
- PyQt - 支持和信号
- PyQt - 未绑定和已绑定信号
- PyQt - 使用 PyQtSignal 创建新的信号
- PyQt - 连接、断开和发射信号
- PyQt - 槽装饰器
- PyQt - 槽连接
- PyQt 布局
- PyQt - 布局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控件
- PyQt - 基本控件
- PyQt - QLabel 控件
- PyQt - QLineEdit 控件
- PyQt - QPushButton 控件
- PyQt - QRadioButton 控件
- PyQt - QCheckBox 控件
- PyQt - QComboBox 控件
- PyQt - QSpinBox 控件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控件
- PyQt - QFontComboBox 控件
- PyQt - QDoubleSpinBox 控件
- PyQt - QToolBox 控件
- PyQt - QDialog 类
- PyQt - QMessageBox
- PyQt - 多文档界面
- PyQt - 拖放操作
- PyQt 绘图 API
- PyQt - 绘图 API
- PyQt 数据库
- PyQt - 数据库操作
- PyQt 核心知识
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 类
- PyQt 有用资源
- PyQt - 快速指南
- PyQt - 有用资源
- PyQt - 讨论
PyQt - QGridLayout 类
一个 **GridLayout** 类对象呈现一个由行和列排列的单元格网格。该类包含 **addWidget()** 方法。可以通过指定单元格的行数和列数来添加任何小部件。如果指定了行和列的跨度因子,则小部件可以比一个单元格更宽或更高。
addWidget() 方法有两个重载,如下所示:
序号 | 方法及描述 |
---|---|
1 |
addWidget(QWidget, int r, int c) 在指定行和列添加小部件 |
2 |
addWidget(QWidget, int r, int c, int rowspan, int columnspan) 在指定行和列添加小部件,并具有指定的宽度和/或高度 |
子布局对象也可以添加到网格中的任何单元格。
序号 | 方法及描述 |
---|---|
1 |
addLayout(QLayout, int r, int c) 在指定行和列添加布局对象 |
QGridLayout 中的列方法
QGridLayout 包含两个列方法:
- **setColumnMinimumWidth()** - 设置容器的最小宽度。
- **setColumnStretch()** - 设置列将获得的超出其必要的额外空间量。
使用嵌套循环和 setGeometry() 方法的网格布局
网格布局是使用 setGeometry() 方法构造的,此方法指的是 pushbutton 的大小和位置。因此,我们使用嵌套 for 循环和 addWidget() 方法来执行此任务。
示例
在下面的示例中,我们创建了一个包含 16 个按钮的网格布局,这些按钮排列在 4 行 4 列中。
import sys from PyQt6.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton def window(): app = QApplication(sys.argv) win = QWidget() grid = QGridLayout() for i in range(1, 5): for j in range(1, 5): grid.addWidget(QPushButton("B" + str(i) + str(j)), i, j) win.setLayout(grid) win.setGeometry(100, 100, 200, 100) win.setWindowTitle("PyQt") win.show() sys.exit(app.exec()) if __name__ == '__main__': window()
输出
以上代码产生以下输出:
代码使用两个嵌套的 for 循环分别表示行和列号,用变量 **i** 和 **j** 表示。它们被转换为字符串以连接每个按钮的标题,该按钮将添加到第 i 行和第 j 列。
使用 QGridLayout 的两列布局
两列布局使用高度相等、宽度相等且在计算机或移动屏幕上并排可见的列。在 PyQt 中,我们将盒子组分成两列,这可以通过 QGridLayout 类的各种内置函数构建 - QGridLayout()、QPushButton()、setLayout() 和 setLayout()。
示例
以下示例演示了使用 QGridlayout 的两列布局代码。
from PyQt6.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton class TwoColumnLayout(QWidget): def __init__(self): super().__init__() # Create a QGridLayout instance layout = QGridLayout() # Add widgets to the layout for i in range(10): layout.addWidget(QPushButton(f'Box {i+1}'), i // 2, i % 2) # Set the layout on the application's window self.setLayout(layout) app = QApplication([]) window = TwoColumnLayout() window.setWindowTitle('PyQt') window.show() app.exec()
输出
以上代码产生以下输出: