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_())
