10.1 QLayout布局管理器基类

一、QLayout布局管理器基类

1.基本概念

  • QLayout是布局管理器基类,属于抽象类。
  • 如果想使用他,就必须子类化,或者直接使用其子类来调用其中的方法和属性,本节课就利用其子类盒子布局管理器来讲解。
  • 基本步骤
# 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://img2022.cnblogs.com/blog/2520904/202204/2520904-20220416095333448-414658517.png)
posted @   Trouvaille_fighting  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示

目录导航