|从零开始的Pyside2界面编程|绘图、布局及页面切换

article/2025/6/24 21:56:34

🐑 |从零开始的Pyside2界面编程| 布局及页面切换🐑

文章目录

  • 🐑 |从零开始的Pyside2界面编程| 布局及页面切换🐑
    • ♈前言♈
    • ♈页面切换♈
    • ♈页面布局♈
    • ♈总结♈

♈前言♈

经过两周的学习自己设备的前端也算是完成了一小半了,最起码把自己的算法都放进去以及控件间的交互也完成的差不多,剩下的就是拓展一些内容了,这周的博客就来记录一下最近做的一些内容,主要就是包含在前段界面对ui界面的一些布局处理,以及增加页面切换的内容。

♈页面切换♈

先来介绍一下页面切换的部分,大致就是创建两个页面后给前一个页面的控件加一个交互的操作,一般都是按钮pushbutton,然后再执行后进入到下一个页面并且关闭或者维持前一个页面,就类似于登录界面。大概就类似于下面这个图的效果(主界面没怎么做就先不展示了)

请添加图片描述
首先就是创建两个ui界面,我这里就直接用QTdesigner进行创建了。
在这里插入图片描述
在这里插入图片描述
然后我们需要实现的是在点击第一个页面的登录按钮后能够跳转到第二个界面并把第一个界面关闭,因此第一个登录界面需要加一个QpushButton,我这里把他命名为loginbutton。然后后面直接上代码。

from PySide2.QtWidgets import QApplication, QWidget, QPushButton
from PySide2.QtUiTools import QUiLoader
import sysclass FirstWindow(QWidget):def __init__(self):super().__init__()self.ui = QUiLoader().load("login.ui")self.ui.loginbutton.clicked.connect(self.open_second_window)def open_second_window(self):self.second = SecondWindow()self.second.show()self.ui.close()  # 关闭第一个UI窗口

我把第一个ui界面保存为login.ui,第二个保存为test.ui。首先第一个类FirstWindow就是对login.ui的创建,初始化的时候由于这里只用到了一个loginbutton因此其他文本框什么的就没有加,直接就只初始化了一个self.ui.loginbutton.clicked.connect(self.open_second_window),也就是当点击loginbutton的时候就去执行open_secone_window这个方法。而open_secone_window这个方法的实现也很简单,就是打开第二个ui界面和关闭第一个ui界面

class SecondWindow(QWidget):def __init__(self):super().__init__()self.ui = QUiLoader().load("test.ui")if __name__ == "__main__":app = QApplication(sys.argv)window = FirstWindow()window.setWindowTitle('登录')window.ui.show()sys.exit(app.exec_())

这部分是第二个ui界面的创建和主代码。

♈页面布局♈

然后就来看一下页面布局,也就是 layout的部分,本来我们在qt页面中所设计的ui界面是无法随着界面的放大和缩小控制里面的控件也跟着放大和缩小的,但如果我们加入了一个全局的layout就可以做到全局的放大和缩小,增加layout同样也是代码实现和qtdesigner实现都可以,这里展示一下qtdesigner实现。
首先来看一下布局的方式,在界面的左上方有一列layouts
在这里插入图片描述
比较常用的就是前三个,分别是水平布局、垂直布局以及栅格布局。我这个登录的界面就是用的一个全局的垂直布局,因为要让文本框和两个按钮垂直排列在一起。
我这里的实现步骤就是首先把两个文本框放在一起做一个垂直布局然后把两个按钮也放在一起做一个垂直布局,也比较推荐这种先把一小部分放在一个布局里面,最后用总的布局去布局小布局的形式,这种方式会使得结构比较清晰,而且在独立控制每个控件间距和对齐形式的时候会比较容易,我这个ui界面因为比较小,元素也不多所以比较难体现出这种好处,但是当控件元素比较多的时候就会很容易体现出。下面一步一步简单演示一下。
首先我们来给两个文本框做一个垂直布局,同时选中这两个文本框然后右键点击在菜单栏中选择布局垂直布局
在这里插入图片描述
然后拖动布局大小调整一个比较合适的大小
在这里插入图片描述
在右侧的属性栏中,我们可以调节布局中控件之间的距离以及边缘布局距离控件的距离,加入我们想把两个文本框放在控件的中间位置,可以退通过设置leftmarginrightmargin来实现
在这里插入图片描述
现在我们把左右边缘调整至100可以看出在控件距离布局边缘位置100的时候可以有一个居中的效果。然后我们可以通过上方菜单栏中的’窗体’、‘预览’来实时查看效果。
在这里插入图片描述
从预览中可以看出两个控件相隔距离略大,此时可以通过调整layoutspacing或者直接拖动布局来控制间隔,我们将他调小一点
在这里插入图片描述
调整后的效果
在这里插入图片描述
同样的操作运用在下方两个按钮上面
在这里插入图片描述
最后我们在右侧对象查看器的地方设置全局布局为垂直布局
在这里插入图片描述
设置好了以后就根据全局布局后的预览效果来一点点调整
在这里插入图片描述
我这个就属于第一个文本框的布局将控件的距离调整的过小并且由于全局布局后将局部的布局拉大使得第一开始设置的margin过于小,并且按钮的布局也是margin 比较小,那么依次将文本框的距离增大并且分别调整两个局部布局的margin,这里需要注意的是当我们全局布局结束后,就不可以在拖动局部布局以及控件的大小了所以只能通过属性栏的调整来达到自己想要的效果。
由于此时整个框体的大小为712*557所以对第一个layout做了如下调整
在这里插入图片描述
同理也调整一下第二个布局,调整后可以看一下总体效果。
在这里插入图片描述
如果不希望在正式使用时,用户将页面放大或者缩小,我们可以通过点击最上层控件将其minimumSizemaximumSize来设置为当前页面大小。下图蓝色箭头为当前页面大小。
在这里插入图片描述
此时这一步就算是完成了。

♈总结♈

这一次的博客比较简短,主要也是这周熬得太狠了,从零开始学习界面编程并且还要整自己硬件的通讯协议和算法让他在ui界面实现,但好在结果也还行,也算是越来越熟练了目测再过两周就能完整做完,但也快要到比赛的ddl了,只能说再接再厉吧。


http://www.hkcw.cn/article/KLNMwSjMtJ.shtml

相关文章

我的世界Java版1.21.4的Fabric模组开发教程(十一)创建方块

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十一章——创建方块。想要阅读其他内容,请查看或订阅上面的专栏。 方块(Block) 是构成Minecraft世界的主要组成部分,是组成游戏地图的最基本单元,也是模组开发的核心元素之一…

计算机网络:物理层

目录 一、物理层的基本概念 二、物理层下面的传输媒体 2.1 导引型传输媒体 2.1.1 同轴电缆 2.1.2 双绞线 2.1.3 光纤 2.1.4 电力线 2.2 非导引型传输媒体 2.2.1 无线电波 2.2.2 微波 2.2.3 红外线 2.2.4 可见光 三、传输方式 3.1 串行与并行 3.2 同步与异步 3.…

我的世界Java版1.21.4的Fabric模组开发教程(十)更多物品交互行为

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十章——更多物品交互行为。想要阅读其他内容,请查看或订阅上面的专栏。 在之前的创建自定义数据组件章节中,我们在自定义物品类中重写了来自Item类中的use()方法,实现了在右…

Linux531rsync定时同步 再回忆

rsync定时同步 环境配置 关闭防火墙,selinux systemctl stop firewalld systemctl disable firewall setenforce 0 cat /etc/selinux/configpei SELINUXdisable设置主机名 systemctl set-hostname code systemctl set-hostname backup设置静态IP rsync由于要设…

MySQL数据库复合查询

前言:本文不对SQL查询做详细讲解,而做案例实践,适合已掌握MySQL基础语法,需要通过实际案例巩固技能的开发者。 首先准备这样三张表 雇员信息表、部门信息、薪水等级。如下: 需要库文件的小伙伴私信我哦!&am…

STM32 串口通信①:USART 全面理解 + 代码详解

一 前言 本篇文章并不会系统的从零开始讲起,适合大家对USART有一定的学习,再看本篇文章会有一定的收获,祝大家在本文中,吸收到新的知识。 二 通信方式 1)按数据传输的方式分(这就是“串行 vs 并行”&…

基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践

在企业数字化转型进程中,非结构化文本数据的处理与分析已成为核心技术挑战。传统自然语言处理方法在处理客户反馈、社交媒体内容和内部文档等复杂数据集时,往往难以有效捕获文本间的深层语义关联和结构化关系。大型概念模型(Large Concept Mo…

极地导航的难点及应对措施(上)

在之前的博文《南北极导航选用什么投影?》和何老师的博文《高纬度、跨极区导航技术》中简单说了说南北极导航的投影设置问题。 本文主要说一说南北极导航中实际工作的难点问题以及应对措施。下图是南北极的位置图,从图中可以看出,南极是大陆…

Centos系统搭建主备DNS服务

目录 一、主DNS服务器配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建正向区域文件 4.创建区域数据文件 5.检查配置语法并重启服务 二、从DNS服务配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建缓存目录 4.启动并设置开机自启 一、主DNS服务器配置 1.安装 BIN…

【图像处理入门】3. 几何变换基础:从平移旋转到插值魔法

摘要 掌握图像的几何变换相当于学会「图像的空间魔法」。本文将带你理解平移/旋转/缩放的数学原理,掌握OpenCV中warpAffine和getAffineTransform的核心用法,对比最近邻、双线性等插值算法的优劣。通过图像翻转、镜像、透视变换实战,学会用变…

TomatoSCI分析日记:数据分析为什么用csv不用excel

其实并不是多余,虽然看到的内容是一样的,但是相比excel文件,csv文件没这么多繁文缛节,效率更高。 1.csv更干净 csv本质是纯文本,只有你看到的数据,没有花里胡哨的单元格格式、颜色、批注等隐藏信息&#…

【鱼皮-用户中心】笔记

任务:完整了解做项目的思路,接触一些企业及的开发技术 title 企业做项目流程需求分析技术选型 计划一一、前端初始化1. **下载node.js**2. **安装yarn**3. **初始化 Ant Design Pro 脚⼿架(关于更多可进入官网了解)**4. **开启Umi…

基于 Chrome 浏览器扩展的Chroma简易图形化界面

简介 ChromaDB Manager 是基于 Chrome 浏览器扩展的一款 ChromaDB(一个流行的向量数据库)的数据查询工具。提供了一个用户友好的界面,可以直接从浏览器连接到本地 ChromaDB 实例、查看集合信息和分片数据。本工具特别适合开发人员快速查看和…

[ElasticSearch] ElasticSearch的初识与基本操作

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Kafka 如何保证不重复消费

在消息队列的使用场景中,避免消息重复消费是保障数据准确性和业务逻辑正确性的关键。对于 Kafka 而言,保证不重复消费并非单一机制就能实现,而是需要从生产者、消费者以及业务层等多个维度协同配合。接下来,我们将结合图文详细解析…

【快速解决】数据库快速导出成sql文件

1、cmd直接打开 输入命令 mysqldump -u用户名 -p密码 数据库名 > 导出文件名.sql修改成自己mysql的用户名和密码,和要导出的数据库名称,给导出的文件起一个名字。 如图所示 这样就成功了。

OldRoll复古胶片相机:穿越时光,定格经典

在数字摄影盛行的今天,复古胶片相机的独特魅力依然吸引着无数摄影爱好者。OldRoll复古胶片相机这款软件,以其独特的复古风格和丰富的胶片滤镜效果,让用户仿佛穿越回了那个胶片摄影的黄金时代。它不仅模拟了胶片相机的操作界面,还提…

利用Dify创建一个公司产品知识问答

1、创建知识库 打开dify,创建知识库。 选择创建一个空知识库,对知识库进行命名,或者直接导入已有文本,拖曳或选择文件进入下一步,会自动命名知识库。 创新空知识库后,点击添加文件,再导入已有文…

redis核心知识点

Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 Lis…

黄金价格查询接口如何用C#进行调用?

一、什么是黄金价格查询接口? 提供当日实时黄金行情数据,如上交所,银行账户黄金,国际金价、金店价格等,获取最低价、最高价、卖价、昨日收盘价、开盘价、涨跌值、最新价格、时间、买价、涨跌幅等行情。 二、科技赋能…