9.PyQt5【布局组件】区域分隔器-QSplitter

一、前言

本节我们介绍布局组件中的区域分隔器QSplitter。

二、学习目标

1.QSplitter区域分隔器的应用

三、知识点

1.【QSplitter区域分隔器的应用】

QSplitter是一个带切分条(splitter handle)的布局管理器,可以通过setHandleWidth()函数来设置切分条的宽带。QSplitter可以通过setOrientation()函数来指定分割方向,子组件按加载顺序进行指定方向排列。

  • 添加步骤

    1)创建全局布局

    2)创建分割器实例

    3)为分割器添加组件

    4)为全局布局添加分割器

    5)为窗体设置全局布局

  • 代码示例

    import sys
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSplitter, QTextEdit
    
    
    class QmyWidget(QWidget):
    
        def __init__(self, parent=None):
            super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体
            self.setupUi()
    
        def setupUi(self):
            """页面初始化"""
            # 1.创建全局布局
            self.layout = QVBoxLayout()
            # 2.创建分割器实例
            self.splitter1 = QSplitter(Qt.Horizontal)  # 实例化QSplitter控件并设置初始为水平方向布局
            self.splitter2 = QSplitter(Qt.Vertical)    # 实例化QSplitter控件并设置初始为垂直方向布局
            # 3.为分割器添加组件
            self.textEdit1 = QTextEdit()
            self.textEdit1.setText("Window1")
            self.splitter1.addWidget(self.textEdit1)  # 为splitter1分割器添加部件
            self.splitter1.addWidget(self.splitter2)  # 将分割器2部件也添加到分割器1
    
            self.textEdit2 = QTextEdit()
            self.textEdit2.setText("Window2")
            self.splitter2.addWidget(self.textEdit2)  # 为splitter2分割器添加部件
            self.textEdit3 = QTextEdit()
            self.textEdit3.setText("Window3")
            self.splitter2.addWidget(self.textEdit3)  # 为splitter2分割器添加部件
    
            # 设置分割比
            self.splitter1.setStretchFactor(0, 1)  # 水平第1个区域,比例为1
            self.splitter1.setStretchFactor(1, 2)  # 水平第2个区域,比例为2
            # 4.为全局布局添加分割器
            self.layout.addWidget(self.splitter1)
            # 5.为窗体设置全局布局
            self.setLayout(self.layout)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        myMain = QmyWidget()
        myMain.show()
        sys.exit(app.exec_())
    
posted @ 2023-01-16 10:37  测开星辰  阅读(806)  评论(0编辑  收藏  举报