PyQt5 提供多种布局管理器,可以帮助我们更方便地设置控件间的位置和大小关系。本文将介绍 PyQt5 常用的布局管理器及如何使用这些布局管理器布局控件。
一、常用布局管理器
PyQt5 提供的常用布局管理器包括:
- 垂直布局管理器(QVBoxLayout):将控件按照从上到下的顺序排列;
- 水平布局管理器(QHBoxLayout):将控件按照从左到右的顺序排列;
- 网格布局管理器(QGridLayout):将控件按照网格的形式排列;
- 绝对布局管理器(QAbsoluteLayout):将控件按照绝对位置排列。
二、布局管理器的基本使用
以水平布局管理器(QHBoxLayout)为例,下面的代码创建了一个水平布局管理器,并将两个按钮 "Left" 和 "Right" 添加到布局管理器中,然后将这个布局管理器设置为窗口的布局管理器(setLayout):
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
hbox = QHBoxLayout()
hbox.addWidget(QPushButton('Left'))
hbox.addWidget(QPushButton('Right'))
self.setLayout(hbox)
self.setGeometry(200, 100, 300, 200)
self.setWindowTitle('Horizontal Layout')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
my_widget = MyWidget()
sys.exit(app.exec_())
三、网格布局管理器的使用
网格布局管理器(QGridLayout)可以将控件放到一个二维的网格中,并且控件的大小会根据网格的大小自动适应。以下代码为网格布局管理器的示例,将四个按钮分别放到了一个 2x2 的网格中:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grid = QGridLayout()
button_names = ['1', '2', '3', '4']
positions = [(i, j) for i in range(2) for j in range(2)]
for name, position in zip(button_names, positions):
button = QPushButton(name)
grid.addWidget(button, *position)
self.setLayout(grid)
self.setGeometry(200, 100, 300, 200)
self.setWindowTitle('Grid Layout')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
my_widget = MyWidget()
sys.exit(app.exec_())
以上就是使用 PyQt5 布局管理器的基本方法和常用布局管理器的介绍。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 布局管理 - Python技术站