PyQt6 表单布局Form Layout (QFormLayout)

news2024/9/9 6:23:59

锋哥原创的PyQt6视频教程:

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计43条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库QTDesigner安装与配置、第3讲 PyQt6第一个程序HelloWorld实现等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV11C4y1P7fj/

FormLayout控件表示表单布局,它的基类是QFormLayout,该控件以表单方式进行布局。

表单是一种网页中常见的与用户交互的方式,其主要由两列组成,第一列用来显示信息,给用户提示,而第二列需要用户进行输入或者选择

QFormLayout常用方法:

方法说明
addRow()添加行
insertRow()插入行
removeRow()删除行
getWidgetPosition()获取控件位置
getLayoutPosition()获取容器管理器位置
rowCount()获取行的总个数
setLayout()设置布局管理器的位置
setWidget()修改控件位置
takeRow()移除行但并不删除子控件
labelForField()标签操作
setRowWrapPolicy()设置行的包装策略
rowWrapPolicy()获取行的包装策略
setFormAlignment()对其方式,对整个表单进行设置
setLabelAlignment()对其方式,对标签(左侧区域)进行设置
formAlignment()对其方式,获取整个表单的对齐方式
labelAlignment()对其方式,获取标签布局标签(左侧)侧的对齐方式
setFieldGrowthPolicy()设置字段增长策略
fieldGrowthPolicy()获取字段增长策略

UI生成参考代码:

from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(649, 520)
        self.formLayoutWidget = QtWidgets.QWidget(parent=Form)
        self.formLayoutWidget.setGeometry(QtCore.QRect(110, 60, 471, 371))
        self.formLayoutWidget.setObjectName("formLayoutWidget")
        self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget)
        self.formLayout.setLabelAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.formLayout.setFormAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignTop)
        self.formLayout.setContentsMargins(20, 50, 20, 0)
        self.formLayout.setHorizontalSpacing(20)
        self.formLayout.setVerticalSpacing(30)
        self.formLayout.setObjectName("formLayout")
        self.label = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.label.setObjectName("label")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.SpanningRole, self.label)
        self.label_2 = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label_2.setObjectName("label_2")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_2)
        self.lineEdit = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit.setObjectName("lineEdit")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit)
        self.label_3 = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label_3.setObjectName("label_3")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_3)
        self.lineEdit_2 = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_2)
        self.label_4 = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label_4.setObjectName("label_4")
        self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_4)
        self.lineEdit_3 = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_3)
        self.pushButton = QtWidgets.QPushButton(parent=self.formLayoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.formLayout.setWidget(4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.pushButton)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "用户注册"))
        self.label_2.setText(_translate("Form", "用户名:"))
        self.label_3.setText(_translate("Form", "密码:"))
        self.label_4.setText(_translate("Form", "确认密码:"))
        self.pushButton.setText(_translate("Form", "注册"))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1312572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

react经验7:高亮关键字

预期效果: 实现原理 将需要高亮的关键词做成正则表达式 new RegExp((${word}), "gi")使用上述正则表达式切割目标字符串 origin.split(new RegExp((${word}), "gi"))切割结果会包含正则匹配到的词 过滤掉空字符,并对关键词包裹…

实在智能“数字员工”荣获工信部赛宝信创“全栈优秀解决方案奖”

近日,由工信部和中国通信企业协会主办的“2023(第四届)数字化转型推动高质量发展大会”在海口成功举办,大会现场重磅发布了中国赛宝信息技术应用创新优秀解决方案获奖名单,实在智能《信创RPA-统计局数智办公解决方案》…

24年五年制专转本招生院校有可能发生变动

据悉,24年五年制专转本院校可能将发生改变,南京传媒学院有可能停止招生 将新增一所招生大学:南京航空航天大学金城学院 南京航空航天大学金城学院始建于1999年,是南京航空航天大学联合社会力量创办的独立学院。学校位于江苏省南京…

Vue学习计划-Vue2--VueCLi(五)全局事件总线、消息订阅与发布(pubsub)

抛出问题:我们多级组件,或者任意不想关的子组件如何传递数据呢? 1. 全局事件总线($bus) 一种组件间通信的方式,适用于任意组件间通信 全局事件总线示意图: 安装全局事件总线: new Vue({..…

代码随想录二刷 | 二叉树 | 110.平衡二叉树

代码随想录二刷 | 二叉树 | 110.平衡二叉树 题目描述解题思路递归迭代 代码实现递归法迭代法 题目描述 110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉…

首发卡密引流系统源码

程序特色: 支持个人和企业小程序广告获取卡密。 支持短视频点赞和关注获取卡密。 搭建教程: 环境要求:Nginx、MySQL 5.6、PHP 5.6 步骤: 将压缩包解压至网站根目录。 打开域名/install,按照提示填写数据库信息进行…

【Android】使用 Glide 给 ImageView 加载图像的简单案例

前言 Android Glide是一个用于在Android应用中加载和显示图片的流行开源库。它提供了简单易用的API,可以帮助开发者高效地加载远程图片、本地图片以及GIF动画,并提供了缓存、内存管理等功能,使得图片加载在移动应用中更加流畅和高效。Glide还…

智慧健康监测设备行业分析:中国市场发展潜力巨大

中国智慧健康行业市场规模呈逐年快速增长态势,年均复合增长率超过40%。其中智能可穿戴设备出货量巨大。国务院办公厅印发《“十四五”国民健康规划》。规划提出,促进健康与养老、旅游、互联网、健身休闲、食品等产业融合发展,壮大健康新业态、…

谁能更好地检测深度伪造?人还是机器?

不知您是否听说过深度伪造(Deepfakes)这种欺诈应用?由它产生的各种虚假信息已威胁到了人类社会的方方面面。随着人工智能技术的进步,我们亟待提升识别虚假内容的能力。那么在实际检测假新闻可信度等用例时,到底是人类还…

营销投放下半场,游戏行业如何寻觅进化空间?

摘要:微博,游戏行业突围市场新利器 游戏行业,格局永远在变。 从2017年互联网大厂集体盯上游戏大蛋糕,到2021年行业收缩,再到今年上半年实际销售收入继去年首次出现同比下滑…几经过山车式行情的游戏行业,…

Vue3上传图片和删除图片

<div class"illness-img"><van-uploader:after-read"onAfterRead"delete"onDeleteImg"v-model"fileList"max-count"9":max-size"5 * 1024 * 1024"upload-icon"photo-o"upload-text"上传图…

Attention机制学习

写在前面 注意力机制是一个很不错的科研创新点方向&#xff0c;但是没有系统记录过学习过程&#xff0c;这里记录科研中遇到的各种注意力机制。 Attention机制解释 本质上来说用到attention的任务都有Query&#xff0c;Key&#xff0c;Value三个关键components&#xff0c;目标…

LeetCode 300最长递增子序列 674最长连续递增序列 718最长重复子数组 | 代码随想录25期训练营day52

动态规划算法10 LeetCode 300 最长递增子序列 2023.12.15 题目链接代码随想录讲解[链接] int lengthOfLIS(vector<int>& nums) {//创建变量result存储最终答案,设默认值为1int result 1;//1确定dp数组&#xff0c;dp[i]表示以nums[i]为结尾的子数组的最长长度ve…

“文思助手”苏哒智能加入飞桨技术伙伴计划,共同打造“大模型+企业办公”新模式

近日&#xff0c;厦门苏哒智能科技有限公司正式加入飞桨技术伙伴计划&#xff0c;双方将发挥各自的专业优势&#xff0c;共同致力于在智能办公和创作领域实现技术突破和业务创新&#xff0c;帮助企业、知识工作者大幅提高生产力。 厦门苏哒智能科技有限公司 厦门苏哒智能科技有…

前端自定义icon的方法(Vue项目)

第一步&#xff1a;进入在线的编辑器进行设计 好用&#xff1a;百度字体编辑器 比如先导入有个ttf文件 添加新字体 双击每个模块进入编辑区域 更改相应的信息&#xff0c;比如name 编辑完了进行导出文件(各种格式就行了)就行了 第二步&#xff1a;在项目中asset文件储存这些文…

TCP为什么可靠之“拥塞控制”

拥塞控制是对网络层面的控制&#xff0c;主要是为了避免发送方发送过多的数据导致网络阻塞&#xff0c;以及出现网络阻塞时能够调整数据发送速率&#xff0c;达到对网络阻塞的一个控制。 拥塞窗口 拥塞窗口cwnd&#xff0c;是发送方维护的一个状态变量&#xff0c;会根据网络…

Vue组件封装知识总结

一、为什么要封装组件 首先&#xff0c;一个好问题&#xff0c;面试要考的&#xff01;为什么要封装组件呢&#xff1f; 提高代码的复用性&#xff1a;通过封装&#xff0c;可以将一段代码或一部分功能抽象为一个独立的组件&#xff0c;并在不同的项目或场景中重复使用。这样可…

simulinkveristand联合仿真——模型导入部署简单人机界面

目录 软件版本 simulink模型编译 veristand导入模型 veristand模型参数设置 veristand配置人机交互界面 veristand模型部署运行 软件版本 matlab2020a&#xff0c;veristand2020 R4 环境搭建及软件获取可看simulink&veristand&labview联合仿真环境搭建-CSDN博客…

记录 | docker报错could not select device driver ““ with capabilities: [[gpu]].

ubuntu18.04 上启动 docker start 报错&#xff1a; could not select device driver “” with capabilities: [[gpu]]. docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]]. ERRO[0005] error waiting for container: con…

如何做到人均告警减少 90%?B 站新一代告警平台的设计与实践

一分钟精华速览 B 站的业务规模和用户群体不断扩大&#xff0c;对于服务的稳定性和可用性的要求也日益增高。这就需要 B 站的监控告警系统能够及时、准确地发现和定位问题&#xff0c;以便尽快解决&#xff0c;维护好用户的使用体验。 本文是对 B 站在告警监控系统上的一次重…