PyQt还提供了一个特殊的布局管理器QSplitter,它可以动态地拖动子控件之间的边界,算是一个动态的局部管理器。
QSplitter允许用户通过拖动子控件的边界来控制子控件的大小,并提供了一个处理拖曳子控件的控制器。
在QSplitter对象中各子控件默认是横向布局的,可以使用Qt.Vertical进行垂直布局。
QSplitter类中的常用方法:
addWidget() 将小控件添加到QSplitter管理器的布局中
indexOf() 返回小控件在QSplitter管理器中的索引
insertWidget() 根据指定的索引将一个控件插入到QSplitter管理器中
setOrientation() 设置布局方向:
Qt.Horizontal,水平方向
Qt.Vertical,垂直方向
setSizes() 设置控件的初始大小
count() 返回小控件在QSplitter管理器中的数量
import sys from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QFrame, QSplitter, QTextEdit from PyQt5.QtCore import Qt class MyWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout(self) self.setWindowTitle("QSplitter例子") self.setGeometry(300, 300, 300, 200) topleft = QFrame() topleft.setFrameShape(QFrame.StyledPanel) bottom = QFrame() bottom.setFrameShape(QFrame.StyledPanel) splitter1 = QSplitter(Qt.Horizontal) textedit = QTextEdit() splitter1.addWidget(topleft) splitter1.addWidget(textedit) splitter1.setSizes([100, 200]) splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(splitter1) splitter2.addWidget(bottom) hbox.addWidget(splitter2) self.setLayout(hbox) if __name__ == "__main__": app = QApplication(sys.argv) win = MyWindow() win.show() sys.exit(app.exec_())