PyQt5中的布局管理-QSplitter

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_())
原文地址:https://www.cnblogs.com/lynsha/p/13469901.html