其他分享
首页 > 其他分享> > 10.1 QLayout布局管理器基类

10.1 QLayout布局管理器基类

作者:互联网

一、QLayout布局管理器基类

1.基本概念

# 1.创建布局管理器对象
# 2.设置对象参数
# 2.1边距调节
# 2.2设置布局的方向
# 3.添加需要布局的控件到布局管理器
# 4.添加布局管理器到父控件

2.代码

点击查看代码
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("布局管理-初识QLayout - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        # 初识布局管理器
        # QLayout是抽象类,直接使用子类创建布局管理器
        # 因为父控件直接和布局管理器产生联系,布局管理器再和子控件建立联系,所以这里子控件可以省略self
        label1 = QLabel('按钮1', self)
        label1.setStyleSheet('background-color:green')
        label2 = QLabel('按钮2', self)
        label2.setStyleSheet('background-color:red')
        label3 = QLabel('按钮3', self)
        label3.setStyleSheet('background-color:green')

        # # 传统方式布局
        # label_width = self.width()
        # label_height = self.height() / 3
        # label1.resize(label_width, label_height)
        # label2.resize(label_width, label_height)
        # label3.resize(label_width, label_height)
        #
        # label1.move(0, 0)
        # label2.move(0, label_height)
        # label3.move(0, label_height * 2)

        # 1.创建布局管理器对象
        # v_layout = QVBoxLayout() # QVBoxLayout 垂直布局
        v_layout = QHBoxLayout()   #QHBoxLayout 水平布局

        # 2.设置对象参数
        # 2.1边距调节
        v_layout.setContentsMargins(10, 30, 50, 70)  # 外边距 、左上右下
        v_layout.setSpacing(30)  # 内边距
        # 2.2设置布局的方向
        # Qt.RightToLeft
        # Qt.LeftToRight
        # Qt.LayoutDirectionAuto  # 自动布局
        self.setLayoutDirection(Qt.RightToLeft)

        # 3.添加需要布局的控件到布局管理器
        v_layout.addWidget(label1)
        v_layout.addWidget(label2)
        v_layout.addWidget(label3)

        # 4.添加布局管理器到父控件
        self.setLayout(v_layout)  # setLayout直接继承QWidget,不是控件,只是一种定位策略
        print(self.children())  # 这时候布局管理器和子控件拥有相同的父对象self,所以布局管理器不是控件,只是一种定位策略
        # label2.hide()



if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())
## 3.效果 ![](https://www.icode9.com/i/l/?n=22&i=blog/2520904/202204/2520904-20220416095333448-414658517.png)

标签:10.1,控件,管理器,self,布局,label,QLayout,layout
来源: https://www.cnblogs.com/yuyingblogs/p/16152030.html