PySide6布局管理学习笔记(QFormLayout布局详解)

QFormLayout是一个非常方便的布局类,以两列的形式布局其子项。左列一般由便签组成,右列由“字段”小部件(比如单行文本框QLineEdit,QSpinBox等)组成。

QGridLayout也可以实现同样效果的两列布局,而QFormLayout是更高级的替代方案,有如下几方面的有点:

1、遵守不同平台的外观和感觉准则:

例如,macOs 和Linux KDE中的标签通常是使用右对齐,而Window和Linux GNOME中的应用程序通常使用左对齐。

2、支持包装长行:

对于显示器为小屏的设备,QFormLayout可以设置为包括包裹长行,设置包裹所有行。

3、快速创建标签字段:

使用addRow(self,labelText:str,field:QWidget)会在后台根据labelText内容(字符串)创建QLabel实例(标签),并且自动设置和QWidget实例的伙伴关系。

可以通过调用setLabelAlignment()、setFormAlignment()、setFieldGrowthPolicy和setRowWrapPolicy()来覆盖表单样式。例如通过设置几个函数设置,程序运行在不同平台显示一致的外观。

# -*- coding: utf-8 -*-
"""
文件名字:Pyside6_FormLayoutDemo
作者姓名:诚外无物
创建日期:2023/11/14
项目名称:chapter01
"""
import sys
from PySide6.QtWidgets import *
from PySide6.QtGui import Qt


class FormLayoutDemo(QWidget):
    def __init__(self, parent=None):
        super(FormLayoutDemo, self).__init__(parent)
        self.setWindowTitle("QFormLayout布局管理例子")
        self.resize(400, 100)
        
        # 创建QFormLayout布局实例
        formLayout = QFormLayout()
        
        # 创建3个输入类控件
        nameLineEdit = QLineEdit()
        emailLineEdit = QLineEdit()
        ageSpinBox = QSpinBox()

        # 把3个输入类小控件添加到QFormLayout布局对象中
        # QFormLayout布局对象addRow()方法,根据传入的字符串参数自动创建了3个QLabel便签实例
        formLayout.addRow("&Name:", nameLineEdit)
        formLayout.addRow("&Email:", emailLineEdit)
        formLayout.addRow("&Age:", ageSpinBox)

        # 模拟macStyle表单布局外观,但使用左对齐的标签
        formLayout.setRowWrapPolicy(QFormLayout.DontWrapRows)
        formLayout.setFieldGrowthPolicy(QFormLayout.FieldsStayAtSizeHint)
        formLayout.setFormAlignment(Qt.AlignHCenter | Qt.AlignTop)
        formLayout.setLabelAlignment(Qt.AlignLeft)
        
        # 增加空白
        formLayout.addItem(QSpacerItem(30,30))

        # 添加两个按钮对象(一行两列,和上面的布局对应)
        formLayout.addRow(QPushButton('确认'),QPushButton('取消'))

        self.setLayout(formLayout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = FormLayoutDemo()
    form.show()
    sys.exit(app.exec())

以上代码运行后,显示如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值