python3GUI--仿崩坏三二次元登录页面(附下载地址) By:PyQt5
文章目录
- 一.前言
- 二.预览
- 三.实现方案
- 1.实现原理
- 1.PyQt5
- 2. 具体实现
- 2.UI设计
- 1.UI组件化、模块化
- 2.UI设计风格思路
- 3.项目代码结构
- 4.使用方法
- 3.代码分享
- 1.支持跳转网页的QLabel组件
- 2.三角形ICON按钮
- 四.总结
大小:33.3 M,软件安装包放在了这里!
一.前言
大家好啊!本次给大家带来我开发的仿崩坏三web页面的登录页面,使用的技术是PyQt5,最后打包软件制作成了安装包,欢迎大家体验!
二.预览
这就是我们的软件主体了,整体采用一个背景,前景是不同方式的登录方案,主要分为短信登录、密码登录、扫码登录,三个页面都实现了,这里只举一个例子来展示界面效果。
三.实现方案
1.实现原理
1.PyQt5
PyQt5是一个Python库,它提供了对Qt5图形界面(GUI)应用程序框架的访问。Qt是一个跨平台的应用程序框架,它允许开发者创建非常复杂的GUI应用程序。
PyQt5是由Phil Thompson 开发的,是对Qt应用程序框架的Python包装。它是PySide的一个可选的API,PySide是它的另一个版本,但在某些情况下,PyQt5的性能更好。
2. 具体实现
通过使用PyQt5配合python的方案完成GUI界面的设计,使用虚拟环境打包的方式缩小打包体积,最后使用安装程序将我们的软件做成安装包。
2.UI设计
1.UI组件化、模块化
本次的UI完全是使用手写代码的方式,所有组件都是单独的类,均可以进行单元模块测试,说具体一点,我们的最后软件效果就是一架飞机,每个模块就是个个组件,这些组件可以是特殊的也可以是复用的,模块的复用保证了软件整体的风格一致性,更好的实现了UI上的“高内聚,低耦合”。
这里我们一个组件来举例子,登录面板:
这些组件我们是能够单独调试测试的
2.UI设计风格思路
有了好的设计才能落实软件GUI的开发,本次参考了WEB端的网页,在网页端下载相关资源最后通过硬编码放置到项目中,这样我们就能够对外隐藏相关资源文件。
这里给大家看下我的资源文件列表:
3.项目代码结构
这里认为读者已经拿到本项目的源代码,
我们所有的源代码都在src/目录下
为了生成qrc转出的.py方便一些,这里仍然写了自定义的脚本来一键生成资源数据
我们主要的代码量在widgets/目录下,这里包括:基础组件、自定义的组件、页面组件、特殊组件。
4.使用方法
通过安装程序之后,创建桌面图标,双击打开后软件会全屏,如果需要关闭的话,直接点击登录区域的X即可。
3.代码分享
这里和大家分享我的代码
1.支持跳转网页的QLabel组件
class HyperlinkLabel(QLabel):"""封装了支持超链接和文本交互的 QLabel。"""def __init__(self, parent=None):super().__init__(parent)self.setWordWrap(True)self.setOpenExternalLinks(True) # 允许点击链接跳转到浏览器self.setTextInteractionFlags(Qt.TextBrowserInteraction) # 支持文字交互def set_html_text(self, html_text):"""设置 HTML 格式的文本。"""self.setText(html_text)
2.三角形ICON按钮
class TriangleIconButton(QPushButton):def __init__(self, *args, **kwargs):super(TriangleIconButton, self).__init__(*args, **kwargs)self.param_init()self.ui_init()def param_init(self):self.icon = ""self.qta_icon = ""self.size_factor = 1def ui_init(self):self.setFixedSize(35, 35) # 设置按钮的大小self.setCursor(Qt.PointingHandCursor)self.setStyleSheet("border: none;") # 去掉边框def set_icon(self, icon_name: str):"""设置按钮的图标。:param icon_name: 图标名称,支持 QtAwesome 图标的名称,如 'fa5s.triangle'。"""self.icon = icon_nameself.qta_icon = qta.icon(icon_name, color="#47B1F5")self.update() # 更新按钮界面,以便重新绘制图标def paintEvent(self, event):super(TriangleIconButton, self).paintEvent(event)if not self.qta_icon: returnpainter = QPainter(self)# 设置为透明背景painter.setRenderHint(QPainter.Antialiasing)painter.setOpacity(1) # 保证图标不透明# 通过 QtAwesome 渲染设置的图标self.qta_icon.paint(painter, QRect(0, 0, self.width(), self.height()), Qt.AlignCenter)# 画一个白色遮罩,覆盖右下角的四分之一区域rect_width = self.width() // self.size_factorrect_height = self.height() // self.size_factormask_polygon = QPolygon([QPoint(self.width() - rect_width, self.height()), # 左下角(右下四分之一区域的左上角)QPoint(self.width(), self.height() - rect_height), # 右上角QPoint(self.width(), self.height()) # 右下角])painter.setBrush(QColor(255, 255, 255)) # 设置白色遮罩painter.setPen(Qt.transparent) # 不显示边框painter.drawPolygon(mask_polygon) # 绘制白色三角形遮罩painter.end()
四.总结
本次和大家分享了我使用PyQt5开发的一款仿崩坏三登录页面,只有UI没有功能,大家需要代码的话请私聊作者,自己加后端逻辑,前端固然美丽但是没有强大的后端也只是一个躯壳。大家觉得我做的还算可以,能给点个赞么?
相关文章:

python3GUI--仿崩坏三二次元登录页面(附下载地址) By:PyQt5
文章目录 一.前言二.预览三.实现方案1.实现原理1.PyQt52. 具体实现 2.UI设计1.UI组件化、模块化2.UI设计风格思路 3.项目代码结构4.使用方法3.代码分享1.支持跳转网页的QLabel组件2.三角形ICON按钮 四.总结 大小:33.3 …...

阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化
在直播场景中,阿里云 Serverless 应用引擎 SAE 提供的无缝弹性伸缩与极速部署能力,确保直播间高并发时的流畅体验,降低了我们的运营成本,简化了运维流程。结合阿里云云原生数据库 PolarDB 的 Serverless 能力,实现了数…...
Unity 学习指南与资料分享
Unity学习资料 Unity学习资料 Unity学习资料 Unity 作为一款强大的跨平台游戏开发引擎,在游戏开发及实时 3D 内容创作领域占据着重要地位。它功能丰富、易于上手,支持多平台发布,为开发者提供了广阔的创作空间。下面为你带来全面的 Unity 学…...
Android SystemUI——CarSystemBar视图解析(十一)
前面文章我们已经把 CarSystemBar 从启动到构建视图,再到将视图添加到 Window 的流程分析完毕,我们知道默认情况下在车载系统中只显示顶部栏和底部栏视图的。这里我们在前面文章的基础上以顶部栏为例具体解析其视图的结构。 一、顶部栏解析 通过《CarSystemBar车载状态栏》这…...

.NET周刊【1月第1期 2025-01-05】
国内文章 3款.NET开源、功能强大的通讯调试工具,效率提升利器! https://www.cnblogs.com/Can-daydayup/p/18631410 本文介绍了三款功能强大的.NET开源通讯调试工具,旨在提高调试效率。这些工具包括LLCOM,提供串口调试和自动化处…...

初识go语言之指针用法
一、环境准备 安装go语言编译环境,官网地址:https://go.dev/dl/ 或者 https://golang.google.cn/dl/ 点击下载按提示安装即可 vscode 安装go语言扩展 测试 package mainimport "fmt"func main() {fmt.Println("Hello, World!") …...

用户中心项目教程(二)---umi3的使用出现的错误
目录 1.情况的说明 2.遇到的问题 1)第一个问题-关于npx的使用 2)第二个问题--unsupport问题 3)第三个收获--nodejs安装问题 4)第四个收获---nvm下载问题 5)第五个问题--尚未解决的问题 3.个人总结 1.情况的说明…...
Android设备:Linux远程gdb调试
更多内容:XiaoJ的知识星球 目录 1.准备工作1)安装Android NDK:2)连接Android手机3)编译程序 2.启动gdbserver1)**推送gdbserver及可执行文件**:**2)启动gdbserver**:3&am…...

(十四)WebGL纹理坐标初识
纹理坐标是 WebGL 中将 2D 图像(纹理)应用到 3D 物体表面的重要概念。在 WebGL 中,纹理坐标通常使用一个二维坐标系,称为 uv 坐标,它们决定了纹理图像如何映射到几何体上。理解纹理坐标的核心就是明白它们如何将二维纹…...

【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 在当今科技飞速发展的时代,制造业正经历着前所未有的变革,工业4.0的浪潮席卷而来。工业4.0旨在通过将…...

Nginx安装配置Mac使用Nginx访问前端打包项目
目录 Linux安装环境变量配置 WinMac安装基本配置 Mac使用Nginx访问前端项目常用命令 Linux 官网:https://nginx.org/ 中文官网:https://nginx.p2hp.com/ 安装 http://nginx.org/en/download.html 1). 安装依赖包 由于nginx是基于c语言开发的&#x…...

国自然面上项目|基于组合机器学习算法的病理性近视眼底多模态影像资料自动化定量分析研究|基金申请·25-01-18
小罗碎碎念 今天和大家分享一个面上项目,资助年限为2020~2023,直接费用为55万。 病理性近视致盲问题严峻,机制和诊疗策略尚待探索。本项目基于前期积累的大量影像资料和算法开发工作,计划构建标准影像数据库࿰…...

03_UI自适应
因为Canvas大小是始终和屏幕一致的 所以设置Canvas的屏幕大小 通常设置为1920 * 1080 又因为屏幕的图像及按钮如果想适配各种显示屏需要锁定长或者宽, 之后利用钉子将其他图像利用创建空节点定在左右或者上下两侧 比如unity编辑器通常是锁定宽的,那我…...
Python在DevOps中的应用:自动化CI/CD管道的实现
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,DevOps理念的引入极大地提升了开发与运维的协作效率,而持续集成(…...
API接口技术推动电商数据处理的自动化
在当今数字化浪潮中,电商行业正以前所未有的速度发展。API(Application Programming Interface,应用程序编程接口)接口技术在这一过程中扮演着至关重要的角色。API接口作为连接不同系统和服务的关键桥梁,通过其自动化处…...
Nginx反向代理架构介绍
Nginx反向代理架构是一种强大的服务器架构模式,它位于用户和原始服务器之间,接收用户的请求并将其转发到一个或多个后端服务器,然后将从后端服务器获取的响应返回给用户,就好像这些内容都是由代理服务器本身直接提供的一样。以下是…...

.Net Core微服务入门系列(一)——项目搭建
系列文章目录 1、.Net Core微服务入门系列(一)——项目搭建 2、.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) 3、.Net Core微服务入门全纪录(三)——Consul-服务注…...
WPF 实现可视化操作数据库的程序全解析
在软件开发中,实现对数据库的可视化操作能极大提升开发效率和用户体验。借助 WPF(Windows Presentation Foundation)强大的界面开发能力,我们可以打造出功能丰富、交互友好的数据库操作程序。本文将详细介绍如何使用 WPF 搭建一个…...
python mysql库的三个库mysqlclient mysql-connector-python pymysql如何选择,他们之间的区别
三者的区别 1. mysqlclient 特点: 是一个用于Python的MySQL数据库驱动程序,用于与MySQL数据库进行交互。 依赖于MySQL的本地库,因此在安装时需要确保系统上已安装了必要的依赖项,如libmysqlclient-dev等。 性能较好,…...

如何将数据库字符集改为中文,让今后所有的数据库都支持中文
最后一行有我自己的my.ini文件 数据库输入中文数据时会变为乱码, 这个时候,我们为每个数据库设置字符集,太过于麻烦,为数据库单独设置重启后又会消失 Set character_set_database’utf8’; Set character_set_server’utf8’; …...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...