PyQt5可视化编程-布局管理

news/2024/5/2 8:53:19/文章来源:https://blog.csdn.net/a316495442/article/details/128054099

在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类
1.绝对定位:
每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性:
(1)元素不会随着我们更改窗口的位置和大小而变化
(2)不能适用于不同的平台和不同分辨率的显示器
(3)更改应用字体大小会破坏布局
(4)如果我们决定重构这个应用,需要全部计算一下每个元素的位置和大小
lbl1 = QLabel('Zetcode', self)
lbl1.move(15, 10)#定位元素的位置,x、y坐标的原点是程序的左上角

 
2.盒布局:
使用盒布局能让程序具有更强的适应性。这个才是布局一个应用的更合适的方式。 QHBoxLayout 和 QVBoxLayout 是基本的布局类,分别是水平布局和垂直布局。
创建按钮:
okButton = QPushButton("OK")
cancelButton = QPushButton("Cancel")
创建一个水平布局,stretch函数在两个按钮前面增加了一些弹性空间,然后把这些元素放在应用的右下角
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
把水平布局放到了一个垂直布局盒里面,弹性元素Stretch会把所有的元素一起都放置在应用的右下角
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
将布局放在盒子即可
self.setLayout(vbox)


3.栅格布局:
最常用的还是栅格布局了。这种布局是把窗口分为行和列。创建和使用栅格布局,需要使用QGridLayout模块。
创建一个QGridLayout实例,并把它放到程序窗口里
grid = QGridLayout()
self.setLayout(grid)
计算器按钮的名称:
names=['Cls','Bck','','Close','7','8','9','/','4','5','6','*','1','2','3','-','0','.','=','+']
创建按钮位置列表,创建按钮,并使用 addWidget()方法把按钮放到布局里面
positions = [(i,j) for i in range(5) for j in range(4)]
for position, name in zip(positions, names):
    if name == '':
        continue
    button = QPushButton(name)
    grid.addWidget(button, *position)

 
4.制作提交反馈信息的布局:组件能跨列和跨行展示
用 QGridLayout 模块创建了一个有三个标签的窗口、两个行编辑和一个文版编辑
grid = QGridLayout()
grid.setSpacing(10)#创建标签之间的空间
grid.addWidget(reviewEdit, 3, 1, 5, 1)指定组件的跨行和跨列的大小

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

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

相关文章

数据结构与算法_AVL平衡二叉树_四种旋转,插入和删除

1 AVL平衡二叉树的概念 平衡二叉树在BST树基础上加了平衡操作。 BST树特点 :在BST树的基础上,引入了节点“平衡”的概念,任意一个节点的左右子树高度差不超过 1 ,为了维持节点的平衡,引入了四种旋转操作,如…

【宝塔面板安装与配置、Redis安装与配置、MySQL安装与配置】

提示:宝塔面板下载地址:https://www.bt.cn/new/download.html 文章目录前言一、快速迁移二、设置固定ip一.保证可以连接网络二.设置固定ip三、搭建宝塔面板四、做好备份五、安装Redis六、安装MySQL一、8.0版本以下二、8.0版本以上三、安全组开放端口四、…

《web课程设计》 基于HTML+CSS+JavaScript实现中国水墨风的小学学校网站模板(6个网页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

安装OpenGL

提示错误信息: (base) C:\Users\Tina\PycharmProjects\FunnyToys-main>conda install opengl Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Collecting…

设置一个不能被继承的类

小屋杂谈,记录日常 方法1: 如果想让这个类不能被继承,可以把这个类的构造函数设置成私有,这样子类去继承他构造就会报错,这样的话这个类就是不能被继承的,如果需要用这个类的对象的话,在基类里…

设备安装CoreELEC系统,并配置遥控

目录0. 前言CoreELEC简介动机硬件1.准备工作1.1下载镜像1.2 制作启动U盘2.安装CoreELEC2.1 从U盘启动2.2 CoreELEC写入盒子emmc3.设置遥控器本文原首发于zdm,由于该平台审核机制出现问题且编辑器极其不好用,所以发布于此 仅作为记录操作的用途 0. 前言 …

时间工具类-- LocalDateTimeUtil详解

LocalDateTimeUtil 对时间进行操作的时候,使用LocalDateTimeUtil工具类可以大大提高使用的效率,具体的方法可以看下图: 具体的使用方法都在图中说明,主要是方便LocalDataTime的使用及操作 LocalDataTime的基本用法 基本用法 /…

00_linux_最简单构建字符设备 2.4版本之前使用

背景:怎么构建一个最简单的字符设备驱动并且可以使用app进行操作 名称大致意思设备proc/devices/设备名称 简单来说 insmode出来的设备节点/dev/xxx 对这个设备进行操作的文件 mknode使用主次设备号对设备关联 大致方法 1.写驱动文件(file_operation),构造对应的read write 函…

叠氮荧光染料:Azide-FL-BDP|1379771-95-5|BDP FL N3叠氮

BDP FL叠氮化物是一种类似于BODIPY FL叠氮化物的荧光染料,是一种具有点击化学性质的荧光染料。该荧光团是硼二吡咯甲基类荧光染料的代表,在水环境中具有较高的量子产率。azide系列产品包括可用于进一步连接的azide-acid;azide-amine&#xff…

Faster R-CNN详解

Faster R-CNN Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。使用VGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。 Faster R-CNN算…

使用星凸随机超曲面模型对扩展对象和分组目标进行形状跟踪(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【电源专题】案例:不导这颗MOS管的原因是在电路上不通用?

本案例发生在MOS管替代料导入时。正常情况下在替代料导入、部品导入的时候,我们需要查看规格书。怎么查找规格书可以看文章【电子通识】芯片资料查询方法 对于一些关键的信息我们要做对比,一般来说要通过列表进行对比。但因为不同的供应商的测试标准不同,有很多是很难对比的…

浅析数据仓库和建模理论

第一章 认识数据仓库 1.1 数据仓库概念 数据仓库,英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决…

第41讲:MySQL内置的QL性能分析工具

文章目录1.SQL性能分析的概念2.分析数据库中SQL的执行频率3.数据库中的慢查询日志3.1.开启慢查询日志功能3.2.模拟慢SQL查询观察日志内容4.Profile查看SQL每个阶段的耗时4.1.开启Profile操作4.2.随便执行一些查询语句4.3.查询执行SQL的耗时4.4.查询某一条SQL每个阶段的耗时4.5.…

Java项目:jsp+servlet实现的新闻发布系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台; 前台主要功能为: 首页、娱乐新闻、经济新闻、文化新闻、小道新闻、用户评价等; 后台主要…

目标检测论文解读复现之二十:基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

ipv6地址概述——配置ipv6

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。个人爱好: 编程,打篮球,计算机知识个人名言:海不辞水,故能成其大;山不辞石…

TMS Echo数据复制的Delphi框架

TMS Echo数据复制的Delphi框架 TMS Echo是用于数据复制的Delphi框架。它是TMS Business产品阵容的一部分,它取决于TMS Aurelius的运营。 TMS Echo允许您至少拥有两个数据库并在它们之间同步信息。您对单个客户数据库所做的更改(插入、更新、删除)可能会传输到其他数…

jenkins关联github

将Jenkins和github关联起来,实现自动化集成 GitHub侧 1、生成secret.txt secret在github上被称为token 进去GitHub --> Settings --> Developer settings --> Personal access tokens -> Generate new token创建一个新的token,勾选两处标红的地方 点…

COLMAP生成MVSNet数据集

一. colmap2mvsnet.py COLMAP可以给图像数据集标定一套相机外参及视图选择。如果想用COLMAP导出的结果输入MVSNet测试,需要把数据集(图片、相机参数等)转化为MVSNet的输入格式。MVSNet的作者yaoyao在Github上提供了colmap2mvsnet.py代码&…