81-Layout布局-水平布局QHBoxLayout和竖直布局QVBoxLayout

水平布局QHBoxLayout和竖直布局QVBoxLayout

表单布局QFormLayout 可把多个控件分成两列多行

水平布局QHBoxLayout只能把多个控件水平排列成一行,竖直布局 QVBoxLayout 只能把多个控件竖直排列成一列。

构造方法

QHBoxLayout和QVBoxLayout 是从QBoxLayout.类继承而来的。

用QHBoxLayout类和QVBoxLayout类创建水平布局和竖直布局对象的方法如下所示其中parent是窗口或容器类控件。

from PySide6.QtWidgets import QHBoxLayout,QVBoxLayout

QHBoxLayout(self)-> None
QHBoxLayout(parent: PySide6.QtWidgets.QWidget)-> None


QVBoxLayout(self)-> None
QVBoxLayout(parent: PySide6.QtWidgets.QWidget)-> None

常用方法

水平布局QHBoxLayout 和竖直布局QVBoxLayout 使用从父类QBoxLayout 继承的方法,常用方法如表所示,主要方法介绍如下。

  • 添加控件和子布局
    • 用addWidget(QWidget,stretch:int =0,Qt.Alignment)方法和 addLayout(QLayout,stretch;int=0)方法可在末尾添加控件和子布局,其中参数 stretch 是布局内部各控件和子布局的相对伸缩系数,相对伸缩系数取整数,同时可以指定控件的对齐方式Qt.Alignment;
    • 用insertWidget(index:int,QWidget,stretch:int=0,Qt.Alignment)方法和insertLayout(index:int,QLayout,stretch:int=0)方法可以在指定的索引位置插人控件和子布局。
  • 插入占位符
    • 用addSpacing(size:int)方法和insertSpacing(index:int,size:int)方法可以在未尾添加或在某个位置插人固定长度的占位空间;
    • 用addStretch(stretch:int =0)方法或insertStretch(index:int,stretch:int=0)方法可以在末尾添加或在某个位置插入可以伸缩的占位空间;
  • 设置最小宽高
    • 用addStrut(int)方法可以设置水平布局在竖直方向的最小高度,也可设置竖直布局在水平方向的最小宽度。
  • 设置布局方向
    • 用setDirection(QBoxLayout.Direction)方法可以设置布局的方向.例如把水平布局改变成竖直布局,参数QBoxLayout,Direction 可以取:
      • QBoxLayout.LeftToRight(从左到右水平布局)
      • QBoxLayout.RightToLeft(从右到左水平布局)
      • QBoxLayout.TopToBottom(从上到下竖直布局)
      • QBoxLayout.bottomTotop(从下到上竖直布局)
QHBoxLayoui或QVBoxLayout的方法及参效类型说 明
addWidger(Qwidget,stretch: int= 0,Qt.Alignment)添加控件,可设置伸缩系数和对齐方式
addLayout(QLayout.stretch:int=0)添加子布局,可设置伸缩系数
addSpacing(size:int)添加固定长度的占位空间
addStretch(stretch:int=0)添加可伸缩空间
addStrut(int)指定垂向最小值
insertWidget(index: int,QWidget.stretch: int=0,Qt.Alignment)根据索引插入控件,可设置伸缩系数和对齐方式
insertLayout(index: int,QLayout.stretch:int=0)根据索引插人子布局,可设置伸缩系数
insertSpacing(index: int,size:int)根据索引插入固定长度的占位空间
insertStretch(index:int,stretch:int=0)根据索引插入可伸缩的空间
count()获取控件、布局和占位空间的数量
maximumSize()获取最大尺寸
minimumSize()获取最小尺寸
setDirection(QBoxLayout.Direction)设置布局的方向
setGeometry(QRect)设置左上角位置和宽度、高度
setSpacing(spacing:int)设置布局内部控件之间的间隙
spacing()获取内部控件之间的间隙
setStretch(index: int,stretch; int)根据索引设置控件或布局的伸缩系数
stretch(index: int)获取第int 个控件的伸缩比例系数
setStretchFactor(QWidget,stretchi int)给控件设置伸缩系数,成功则返回True
setStretchFactor(QLayout.stretch;int)给布局设置伸缩系数、成功则返回True
setContentsMargins(int,int,int,int)
setContentsMargins(margins; QMargins)
设置布局内的控件与边框的页边距
setSizeConstraint(QLayout,SizeConstraint)设置控件随窗口尺寸改变时的变化方式

QVBoxLayout、QHBoxLayout例子

# -*- coding: UTF-8 -*-
# File date: Hi_2023/2/28 23:03
# File_name: 01-QVBoxLayout、QHBoxLayout.py


import sys
from PySide6.QtWidgets import QWidget,QVBoxLayout,QBoxLayout,QLabel,QApplication


# 除名称、方向外,和父类QBoxLayout完全一致
# 甚至可以通过 setDirection()方法把水平布局和垂直布局互换


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QVBoxLayout")
        self.resize(500,500)
        self.move(400,250)
        self.setup_ui()

    def setup_ui(self):
        v_layout = QVBoxLayout()
        self.setLayout(v_layout)
        v_layout.setDirection(QBoxLayout.TopToBottom)
        # v_layout.setDirection(QBoxLayout.RightToLeft)# 甚至可以改变为水平布局

        lb1 = QLabel("lb1")
        lb1.setStyleSheet("background-color: cyan;")
        lb2 = QLabel("lb2")
        lb2.setStyleSheet("background-color: orange;")

        v_layout.addWidget(lb1)
        v_layout.addWidget(lb2)


if __name__ =="__main__":
    app = QApplication(sys.argv)

    window = Window()
    window.show()

    sys.exit(app.exec())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值