10.2 QBoxLayout盒子布局管理器

一、QBoxLayout盒子布局管理器

1.基本概念

  • QBoxLayout盒子布局管理器主要分为两种,一种是横向布局(QHBoxLayout),一种是纵向布局(QVBoxLayout),两种子类使用发放一直,可以通过子类选择也可以通过QBoxLayout直接设置选择哪种布局方式。

2.代码

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


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

    def func_list(self) :
        self.func()

    def func(self) :
        # QBoxLayout有两个子类QVBoxLayout和QHBoxLayout
        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')

        # 1.创建布局管理器
        # QBoxLayout.RightToLeft
        # QBoxLayout.LeftToRight
        # QBoxLayout.TopToBottom
        # QBoxLayout.BottomToTop
        # layout = QBoxLayout(QBoxLayout.RightToLeft)
        layout = QHBoxLayout()

        #2-6 单独测试 7-9 再进行测试
        # # 2.添加控件
        # layout.addWidget(label1)  # 11/6
        # layout.addWidget(label2)  # 33/6
        # layout.addWidget(label3)  # 22/6
        # # 3.添加布局管理器到父控件
        # self.setLayout(layout)
        #
        # # 4.修改方向
        # layout.setDirection(QBoxLayout.TopToBottom)
        #
        # # 5.添加元素
        # label4 = QLabel('标签4', self)
        # label4.setStyleSheet('background-color:green')
        # # layout.addWidget(label4)
        # layout.insertWidget(2, label4)  # 索引值为2的地方插入label4
        #
        # # 6.移除控件
        # layout.removeWidget(label4)  # 移除的控件只是从布局管理器中踢出,但是会在父控件正常展示,可以直接调用hide()方法->三种:删除、隐藏、放入其他布局管理器中
        # label4.hide()

        # 7.添加空白
        # 直接在控件之间添加,就是在控件之间添加一个空白控件
        layout.addWidget(label1)
        # layout.addSpacing(50)  # 可以自由调节某个元素之间的间距
        layout.addWidget(label2)
        layout.addWidget(label3)

        # 8.弹簧:当所有控件没有设定伸缩因子的时候就会使用默认值,如果其中一个控件伸缩因子改为1,代表这个控件占所有伸缩量的百分之百
        # layout.addWidget(label1, 1)  # 11/8
        # layout.addStretch(2)  # 增加2个宽度的伸缩因子
        # layout.addWidget(label2, 3)  # 33/8
        # # layout.insertStretch(2)
        # layout.addWidget(label3, 2)  # 22/8

        # 9.布局嵌套
        label4 = QLabel('标签4')
        label4.setStyleSheet('background-color:green')
        label5 = QLabel('标签5')
        label5.setStyleSheet('background-color:red')
        label6 = QLabel('标签6')
        label6.setStyleSheet('background-color:green')

        layout2 = QVBoxLayout() #垂直方向

        layout2.addWidget(label4)
        layout2.addWidget(label5)
        layout2.addWidget(label6)

        layout.addWidget(label1)
        layout.addWidget(label2)
        layout.addLayout(layout2)
        layout.addWidget(label3)

        self.setLayout(layout)


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

    window.show()
    sys.exit(app.exec_())

3.效果

posted @   Trouvaille_fighting  阅读(286)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示

目录导航