Pyside6:Spacer的使用,布局中控件顶格添加

在普通的布局,如水平或纵向布局中,我们的控件都会保持中间状态,如下:

但有许多情况下 ,我们需要将控件布局为如下界面:

在前端开发时,我们很容易通过flex来进行布局,修正它的居中或者从头或者从尾,但在QT中并不是通过样式表完成,而是使用一种Spacer的控件完成,它的样子如同弹簧一般:

一、QT中的操作

非常简单的操作,仅需要在布局中将Spacer拉入即可完成从上往下或者从下往上的布局:

从左向右或者从右向左也是类似操作:

二、代码中动态添加控件 

如果希望在代码中动态为布局中添加控件也很简单,我们使用如下的布局,然后按一下添加按钮不停往下动态添加:

2.1确定layout

首先我们需要知道我们需要动态添加的layout在哪里,例如我们这个示例中的layout叫做verticalLayout:

2.2使用代码添加

# -*- coding: utf-8 -*-
from PySide6.QtWidgets import QWidget, QPushButton
from UI.TestPage_ui import Ui_Formclass TestPage(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.ui = Ui_Form()self.ui.setupUi(self)self.index = 0def click_add(self):btn = QPushButton()btn.setText(f'第{self.index}个按钮')self.ui.verticalLayout.addWidget(btn)self.index += 1

测试结果:

可以看到结果有悖理论想法,主要原因是我们的添加是在Spacer下方进行了添加,如果在Designer中显示就应该如下:

因此在动态添加时,不可直接使用 addWidget,而是使用insertWidget。

2.3最终代码

# -*- coding: utf-8 -*-
from PySide6.QtWidgets import QWidget, QPushButton
from UI.TestPage_ui import Ui_Formclass TestPage(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.ui = Ui_Form()self.ui.setupUi(self)self.btn_list = []def click_add(self):btn = QPushButton()btn.setText(f'第{len(self.btn_list)}个按钮')self.ui.verticalLayout.insertWidget(len(self.btn_list) + 1, btn)self.btn_list.append(btn)

测试如下:

三、总结 

在界面设计中控件需要顶格处理的情况非常多,因此熟练使用Spacer来处理相关问题很重要,这里不得不吐槽还是css中的flex好用多了。

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

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

相关文章

以赛促学、生态共建 | 软通动力子公司鸿湖万联成功举办基于x86架构的OpenHarmony应用生态挑战赛

近日,由开放原子开源基金会、央视网、江苏省工业和信息化厅、无锡市人民政府、江苏软件产业人才发展基金会、苏州工业园区、无锡高新区等共同承办,鸿湖万联参与共建的“基于x86架构的OpenHarmony应用生态挑战赛”决赛路演在无锡圆满落幕。本次挑战赛历时…

倾斜摄影三维模型数据在立体裁剪应用分析

倾斜摄影三维模型数据在立体裁剪应用分析 立体裁剪是一种将三维模型应用于摄影中的技术,可以在摄影过程中将虚拟的三维模型与现实场景进行合成,从而实现逼真的视觉效果。倾斜摄影是一种通过无人机或其他飞行器进行航拍的技术,可以获取到大范围…

python与pycharm如何设置文件夹为源代码根目录

相信大家遇到过下面这种情况 当我们在当前项目下引入了其它项目的代码,这是其它项目的包的导入路径是不用于当前项目的,这样导致项目无法正常起来,但是我们又不可能一个个文件去处理,这时可以用下面的方式解决 pycharm直接设置 …

安全中级-初开始

一、网络基础 重要点:TTL值(防环,linux64.Windows128 ),IP数据包包头格式字节(20) 标识标志偏移量起到什么作用(数据超过1500会分片) wireshack抓包会有一个MSS&#x…

Vivado中的加法器电路结构

先给出结论,Vivado中的加法器是利用SLICE中的LUT和进位链实现的。 目录 一、全加器二、SLICE如何实现加法器三、实例测试1.直接使用加法器2.LUT级别 一、全加器 一位全加器的结构如下: 其中: A、B为输入的两个加数CI为进位CO为本位对高位的…

连接器电镀小课堂系列三 | 打底电镀、基体金属、润滑、电压

【摘要/前言】 电镀会影响连接器系统的寿命和质量,包括耐腐蚀性、导电性、可焊性,当然还有成本。 【小课堂背景】 这是 Samtec质量工程经理 Phil Eckert 和首席工程师 Matt Brown 讨论连接器电镀相关问题的系列第三部分,主题为 “打底电镀、…

C语言 | Leetcode C语言题解之第40题组合总和II

题目: 题解: int** ans; int* ansColumnSizes; int ansSize;int* sequence; int sequenceSize;int** freq; int freqSize;void dfs(int pos, int rest) {if (rest 0) {int* tmp malloc(sizeof(int) * sequenceSize);memcpy(tmp, sequence, sizeof(int…

通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验

通义灵码自成功入职阿里云后,其智能编程助手的角色除了服务于阿里云内部几万开发者,如今进一步服务函数计算 FC 产品开发者。近日,通义灵码正式进驻函数计算 FC WebIDE,让使用函数计算产品的开发者在其熟悉的云端集成开发环境中&a…

ARTS Week 24

Algorithm 本周的算法题为 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: img 输入:list1 [1,2,4], list2 [1,3,4]输出:[1,1,2,3,4,4] 实现代码如下&…

springcloudgateway集成knife4j

上篇我们聊聊springboot是怎么继承knife4j的。springboot3 集成knife4j-CSDN博客 本次我们一起学习springcloudgateway集成knife4j。 环境介绍 java:17 SpringBoot:3.2.0 SpringCloud:2023.0.0 knife4j : 4.4.0 引入maven配置…

近年数一,数二难度如何,听说24是像张宇那样的题?

直接上分数! “估分一百零几,平时李林130-140,张八110-125的样子,超越做的分数也是100出头。” 24学长说: “远离李林张八!张四没做不评价。” “李林张八暑假前做完当作打基础即可。超越才是真题难度”…

打开新世界大门!淘宝商品关键词搜索电商API接口解密

淘宝商城作为全球最大的电子商务平台之一,为数以亿计的消费者提供了广泛的商品选择和购物体验。然而,对于开发者来说,如何利用淘宝平台的资源进行开发和推广是一个关键的问题。幸运的是,联讯数据淘宝电商API的出现为开发者打开了通…

X-Spider媒体下载工具

软件介绍 X-Spider 是一个功能丰富的推特媒体下载器,它不仅可以帮助用户从推特上下载图片和视频,还提供了一些高级的过滤功能。例如,用户可以通过指定日期范围来筛选需要下载的媒体文件,并且可以跳过已下载的重复文件&#xff0c…

【Linux】文件描述符——万字详解

目录 前言 预备知识 复习C语言的文件接口 写方式打开文件 追加方式打开文件 读方式打开文件 系统的文件接口 open close write read 文件描述符 0 & 1 & 2 理解文件描述符 文件描述符的分配规则 重定向的本质 dup2 理解Linux下一切皆文件 缓冲区…

STM32F4 Hal库中IO外部中断(EXIT)的应用

目录 概述 1 中断和事件 1.1 外部中断/事件控制器 (EXTI) 1.2 EXTI主要特性 1.3 中断和事件的差别 1.3.1 中断产生流程 1.3.2 事件产生流程 1.3.3 STM32F4的事件 2 STM32Cube配置工程 2.1 外部中断/事件介绍 2.2 配置参数 2.3 生成Project 3 STM32F4 Hal库中外部中…

在使用电脑时遇过msvcr120.dll文件丢失的情况怎么办,一键修复dll文件丢失

在使用电脑时有没有遇到过msvcr120.dll文件丢失的情况,遇到这样的情况有什么办法可以解决,废话少说,直接上教程,解决msvcr120.dll文件丢失问题。 msvcr120.dll文件丢失修复方法 A. 从官方或其他可信赖的来源下载并安装缺失的 msv…

众筹商城源码 众筹农业平台 农业乘科技富强之路 线上农业众筹 养殖系统 种植系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 前端是编译后的,后端PHP,带商城,详情看下图 特点和功能: 用户管理:包括注册、登录、个人信息管理等。 项目创建与展示&…

【C语言进阶篇】offsetof宏的介绍 及其实现

目录 一、offsetof宏的介绍 头文件 : offsetof宏的通用形式: 参数说明: 用法举例: 二、offsetof宏的实现 三、offsetof宏的使用注意事项 个人主页: 倔强的石头的博客 系列专栏 :C语言指南 …

Java中的动态代理

动态代理 什么是代理程序为什么需要代理例子如何创建代理对象 应用场景 什么是代理 程序为什么需要代理 对象如果认为身上干的事太多,可以通过代理来转移部分职责; 对象有什么方法想被代理,代理就一定要有对应的方法 使用接口实现&#xf…