PyQt5.QtWidgets 网格布局 并设置控件大小
时间: 2024-09-15 12:03:19 浏览: 73
PyQt5 是一个用于创建图形用户界面的库,它是 Python 的 Qt 绑定。在 PyQt5 中,`QtWidgets` 模块提供了一组用于创建窗口应用程序的 UI 元素。网格布局(QGridLayout)是一种布局管理器,它可以让你在窗口中创建一个像网格一样的布局。
下面是一个简单的例子,演示如何使用 PyQt5 中的 QGridLayout 来创建网格布局,并设置控件大小。
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
class GridExample(QWidget):
def __init__(self):
super().__init__()
# 创建一个网格布局
grid_layout = QGridLayout()
# 创建按钮控件
buttons = []
for i in range(4):
buttons.append([QPushButton('Button {}'.format(i + 1)) for j in range(4)])
# 将按钮控件添加到网格布局中
for i in range(4):
for j in range(4):
grid_layout.addWidget(buttons[i][j], i, j)
# 设置控件大小
# 通过调整控件大小策略可以间接设置控件大小
for i in range(4):
for j in range(4):
policy = buttons[i][j].sizePolicy()
policy.setVerticalStretch(1) # 设置垂直方向拉伸比例
policy.setHorizontalStretch(1) # 设置水平方向拉伸比例
buttons[i][j].setSizePolicy(policy)
# 设置网格布局的行和列的间距
grid_layout.setSpacing(10)
# 将网格布局设置给窗口
self.setLayout(grid_layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = GridExample()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个 `GridExample` 类,它继承自 `QWidget`。在类的构造函数中,我们初始化了一个 `QGridLayout` 对象,并创建了一个按钮的二维列表。接着,我们将每个按钮按照网格布局添加到窗口中。为了设置每个按钮的大小,我们调整了它们的大小策略(sizePolicy),并设置了布局的间距。
阅读全文