当前位置: 首页 > news >正文

PyQt6的开发流程(密码生成小程序为例)

PyQt6的开发流程(密码生成小程序为例)



文章目录

  • PyQt6的开发流程(密码生成小程序为例)
    • 一、流程介绍与概览
      • 1. 界面与逻辑分离的开发流程
      • 2. PyQt6的开发流程
    • 二、打开 designer.exe 创建文件
    • 三、用QT设计师绘制界面保存成ui
      • 1. QT常用组件介绍
      • 2. 密码生成小程序界面设计
    • 四、用pyuic6把ui文件转换成python文件
    • 五、界面与逻辑分离的方法编写主程序
    • 六、编写信号处理函数(点击按钮做操作)
    • 七、使用pyinstaller打包成exe程序


  1. 用 QT 设计师绘制界面保存成 ui 文件
  2. 用 pyuic6 把 ui 文件转换成 python 文件
  3. 界面与逻辑分离的方法编写主程序
  4. 编写信号处理函数(点击按钮做操作)
  5. 使用 pyinstaller 打包成 exe 程序

一、流程介绍与概览

1. 界面与逻辑分离的开发流程

在这里插入图片描述

2. PyQt6的开发流程

在这里插入图片描述

二、打开 designer.exe 创建文件

在cmd中打开conda环境,找到pyqt所在的位置进行复制。
在这里插入图片描述
将复制的路径粘贴到文件夹的位置栏跳转到该文件夹,并且在右侧搜索框搜索designer.exe:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、用QT设计师绘制界面保存成ui

1. QT常用组件介绍

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 密码生成小程序界面设计

在这里插入图片描述
对界面内容进行垂直布局
在这里插入图片描述
垂直布局结果:
在这里插入图片描述
修改界面的标题title->windowTitle
在这里插入图片描述
选中整个界面框修改其名字(整个界面框的名字将在执行pyuic6 password_generate.ui -o password_generate.py命令将password_generate.ui文件生成password_generate.py文件中的类名Ui_PasswordGenerate):
在这里插入图片描述
修改界面中组件的名字objectname,在程序中要利用改名字写具体的函数命令:
在这里插入图片描述

Ctrl+S保存界面的ui文件:
在这里插入图片描述
保存文件之后名字在上方显示:
在这里插入图片描述

四、用pyuic6把ui文件转换成python文件

激活pyqt环境

conda activate pyqt

利用pyuic6将.ui文件转成.py文件

pyuic6 password_generate.ui -o password_generate.py

五、界面与逻辑分离的方法编写主程序

1
在这里插入图片描述
每次都要在逻辑入口主程序中添加的固定内容如下图,需要修改3处

  • password_generate.ui界面生成的password_generate.py文件导入类Ui_PasswordGenerate
  • password_generate.py文件中,取类名Ui_PasswordGenerate下划线后的名字PasswordGenerate添加My改为MyPasswordGenerate作为主程序中的类名;
  • 实例化的时候将大写名字改为小写

在这里插入图片描述
固定内容的代码,拷贝到main文件中进行修改

from PyQt6.QtWidgets import (QApplication, QDialog
)
from password_generate import Ui_PasswordGenerate
import sysclass MyPasswordGenerate(Ui_PasswordGenerate, QDialog):def __init__(self):super().__init__()self.setupUi(self)  # 使用父类 Ui_PasswordGenerate 中的 setupUi 函数self.show()  # 展示窗口if __name__ == '__main__':app = QApplication(sys.argv)  # 一个程序本身一定有个入口,创建 QApplication 来启动 Dialog 窗口myPasswordGenerate = MyPasswordGenerate()sys.exit(app.exec())

main程序直接运行即可出界面:
在这里插入图片描述

六、编写信号处理函数(点击按钮做操作)

在这里插入图片描述

此处添加了信息弹窗提示以及绑定了pushButton的点击命令

添加信息弹窗类QMessageBox
在这里插入图片描述
绑定pushButton的点击命令:
在这里插入图片描述
pushButton绑定命令执行的具体函数:
在这里插入图片描述
完整代码如下:

from PyQt6.QtWidgets import (QApplication, QDialog, QMessageBox
)
from password_generate import Ui_PasswordGenerate
import sys
import string
import randomclass MyPasswordGenerate(Ui_PasswordGenerate, QDialog):def __init__(self):super().__init__()self.setupUi(self)  # 使用父类 Ui_PasswordGenerate 中的 setupUi 函数self.show()  # 展示窗口self.pushButton.clicked.connect(self.new_password)def new_password(self):words = (string.digits+ string.ascii_uppercase+ string.ascii_lowercase+ string.punctuation)words = random.sample(list(words), 20)password = "".join(words)self.lineEdit.setText(password)QMessageBox.information(self, "信息提示", "密码生成成功")if __name__ == '__main__':app = QApplication(sys.argv)  # 一个程序本身一定有个入口,创建 QApplication 来启动 Dialog 窗口myPasswordGenerate = MyPasswordGenerate()sys.exit(app.exec())

七、使用pyinstaller打包成exe程序

在这里插入图片描述
打开cmd,在文件目录下打包main文件:

pyinstaller -F -w password_generate_main.py

在这里插入图片描述

相关文章:

PyQt6的开发流程(密码生成小程序为例)

PyQt6的开发流程(密码生成小程序为例) 文章目录 PyQt6的开发流程(密码生成小程序为例)一、流程介绍与概览1. 界面与逻辑分离的开发流程2. PyQt6的开发流程 二、打开 designer.exe 创建文件三、用QT设计师绘制界面保存成ui1. QT常用…...

思腾云计算中心 | 5千平米超大空间,基础设施完善,提供裸金属GPU算力租赁业务

2021年,思腾合力全资收购包头市易慧信息科技有限公司,正式开启云计算业务。思腾云计算中心占地2400平米,位于包头市稀土高新区,毗邻多家知名企业,地理位置优越,交通便利,是区内重要的信息化产业…...

【Leetcode每日一题】二分查找 - 在排序数组中查找元素的第一个和最后一个位置(难度⭐⭐)(18)

1. 题目解析 Leetcode链接:34. 在排序数组中查找元素的第一个和最后一个位置 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于找到给定目标值所在的数组下标区间,设计一个O(logn)的算法。 2. 算法原…...

远程连接 vscode 出错 “远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件”

原因: vscode 版本是 1.86,服务器上的 glibc 和 libstdc 版本不满足 要求(2.28 和 3.4.25)。 解决: 1、下载 1.85.2,解压直接运行 Code.exe。 2、回退 Remote-ssh 到 0.107.1。 参考: vscode 1.86版本远程ssh不兼容旧…...

Maven入门:Java项目构建和管理的利器

Maven入门:Java项目构建和管理的利器 Maven 是一个项目管理和综合工具,它基于项目对象模型(POM)概念。Maven 可以管理项目的构建、报告和文档。以下是一篇介绍 Maven 配置和应用的教程文章。 Maven简介 Maven 使用其核心概念 POM…...

《游戏引擎架构》 -- 学习4

资源及文件系统 文件系统 游戏引擎的文件系统API通常提供以下功能: 搜需路径:是含一串路径的字符串,各路径之间以特殊字符(如冒号或分号)分隔,找文件时就会从这些路径进行搜寻。例如在命令行下执行程序&a…...

Wagtail安装运行并结合内网穿透实现公网访问本地网站界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默&#xf…...

10分钟快速开始SkyWalking结合Springboot项目

10分钟快速开始SkyWalking结合Springboot项目 实习期间,公司让我去学习一下链路追踪如何集成到Springboot项目中。 为此有两个方案: 1.opentelementryjaegerprometheus opentelementry 收集器收集线上的metrics和traces,然后发送给jaeger和p…...

STM32—触摸键

目录 1 、 电路构成及原理图 2 、编写实现代码 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 触摸键简单的了解就是一次电容的充放电过程。从原理图可以看出,触摸键 …...

python中字典(dict)原理及其操作

原理 Python中的字典(Dictionary)是一种基于哈希表(Hash Table)的实现,提供了高效的键值对(Key-Value Pair)存储和访问机制。了解字典的工作原理有助于更好地理解其性能特性以及为什么在某些情…...

​​​​​​​​​​​​​​.NET Core Web API实现微服务集群部署

​​​​​​​.NET Core Web API实现微服务集群部署 在.NET Core Web API中实现微服务集群部署通常涉及多个步骤,包括服务拆分、容器化、服务注册与发现、负载均衡等。以下是一个简化的步骤指南,用于在.NET Core中构建和部署微服务集群: 服…...

网络安全与信创产业发展:构建数字时代的护城河

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…...

外包干了3个月,技术倒退1年。。。

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…...

Unity发布webgl获取浏览器的URL

Unity发布webgl获取浏览器的URL Unity发布webgl之后获取浏览器的url 在unity中创建文件夹Plugins,然后添加添加文件UnityGetBrowserURL.jslib var GetUrlFunc {//获取地址栏的URLStringReturnValueFunction: function () {var returnStr window.top.location.hre…...

StarRocks实战——多维分析场景与落地实践

目录 一、OLAP 系统历史背景 1.1 历史背景与痛点 1.2 组件诉求 二、StarRocks 的特点和优势 2.1 极致的查询性能 2.2 丰富的导入方式 2.3 StarRocks 的优势特点 三、多维分析的运用场景 3.1 实时计算场景 / 家长监控中心 3.2 实时更新模型选择 3.2.1 更新模型UNIQU…...

golang 函数式编程库samber/mo使用: Result

golang 函数式编程库samber/mo使用: Result 如果您不了解samber/mo库, 请先阅读上一篇 Option , 这篇讲述结构体Result的使用 Result和Option区别 samber/mo有了Option, 为什么还有Result呢? 我们先看看定义: Opt…...

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12)

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12) 介绍算法公式 代码rolling函数介绍核心代码计算 CHO 完整代码 介绍 CHO(济坚指数)是一种在金融领域中用于衡量市场波动性和风险的指数 先…...

MySQL的SQL语句

1.MySQL连接 连接命令一般是这样写的 mysql -h$ip -P$port -u$user -p比如:mysql -h127.0.0.1 -P3306 -uroot -p -h 指定连接的主机地址;-P 指定连接端口号;-u 指定用户名 -p指定用户名密码 2.SQL分类 DDL(Data Definition Language) 数据定义语言&…...

ABAP 发送带EXCEL邮件

前言 没啥特殊需求,就是有个库龄报表用户想整邮件发送 实现 用的最简单的XLS文件作为excel附件发送出去 观察XLS文件的纯文本格式,每列之间用TAB制表符分隔,每行之间用回车符分隔 思路也比较明确,在SAP中实现这种格式&#xf…...

Linux Nginx SSL 证书配置正确,扔展示不安全

Nginx SSL 配置 首先我能够确定自己的Nginx SSL是配置正确的: 问题展示 通过浏览器访问自己域名,点击不安全后查看证书,展示的证书并不是自己所配置的证书,如下: 通过curl -vvv https://域名访问返回的证书是过期…...

为什么工作越久的精英,最后都放弃了 MBTI?

很多人在职场和生活中遇到瓶颈,第一反应是去测测 MBTI 或者大五人格。 甚至很多大厂在招聘时,也会把这些测试当作金标准。但我观察到一个现象:真正处于决策核心的高净值人群,早就开始放弃这些“自报式”的性格测试了。为什么&…...

Cogito-3B量化部署实测:GTX1650/RTX3050/RTX4060不同显卡配置对比

Cogito-3B量化部署实测:GTX1650/RTX3050/RTX4060不同显卡配置对比 1. 测试背景与目标 Cogito-v1-preview-llama-3B作为一款性能出色的3B参数混合推理模型,在实际部署中面临显存占用的挑战。本次测试旨在评估该模型在不同消费级显卡上的量化部署表现&am…...

【仅限首批尝鲜者】Python 3.15 JIT真实生产环境对比:Django API吞吐+22%,但Flask微服务却降15%?

第一章:Python 3.15 JIT编译器的架构演进与设计哲学Python 3.15 引入了实验性但高度结构化的内置 JIT 编译器(代号 “Tartan”),标志着 CPython 首次将即时编译能力深度集成至解释器核心,而非依赖外部工具链。其设计哲…...

【Python实战解析】从数据爬取到房价预测:一个完整的数据科学项目实战

1. 从零开始:房产数据爬取实战 第一次做房产数据爬取时,我盯着满屏的HTML标签差点崩溃。但后来发现,只要掌握几个关键技巧,爬取房产网站数据其实比想象中简单得多。我们这次要爬取的是长沙二手房数据,包含户型、面积、…...

联邦学习与差分隐私:如何在MXNet中实现安全的深度学习训练

联邦学习与差分隐私:如何在MXNet中实现安全的深度学习训练 在当今数据驱动的AI时代,保护用户隐私和数据安全已成为深度学习框架必须面对的重要挑战。MXNet作为Apache基金会旗下高效的深度学习框架,通过集成联邦学习和差分隐私技术&#xff0…...

[特殊字符] Nano-Banana参数详解:LoRA权重对部件排布影响的实证分析

Nano-Banana参数详解:LoRA权重对部件排布影响的实证分析 1. 项目简介 Nano-Banana是一款专为产品拆解和平铺展示风格设计的轻量化文本生成图像系统。这个项目的核心价值在于深度融合了专属的Turbo LoRA微调权重,专门针对Knolling平铺、爆炸图、产品部件…...

HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效

HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效 1. 效果展示:赛博朋克音效的沉浸式体验 HunyuanVideo-Foley 私有部署镜像带来的音效生成能力,让AI创作达到了专业音频工程师的水准。我们以"赛博朋克城市雨夜"为场…...

FaceFusion零基础换脸教程:5分钟搞定高清AI换脸,保姆级手把手教学

FaceFusion零基础换脸教程:5分钟搞定高清AI换脸,保姆级手把手教学 1. 前言:为什么选择FaceFusion 想试试AI换脸但被复杂的安装步骤劝退?FaceFusion可能是目前最简单易用的换脸工具。这个全新一代AI换脸工具无需安装,…...

如何实现DPlayer弹幕实时翻译功能:打破语言障碍的终极指南

如何实现DPlayer弹幕实时翻译功能:打破语言障碍的终极指南 【免费下载链接】DPlayer :lollipop: Wow, such a lovely HTML5 danmaku video player 项目地址: https://gitcode.com/gh_mirrors/dpl/DPlayer DPlayer是一款优秀的HTML5弹幕视频播放器&#xff0c…...

Apache Weex UI手势操作组件:滑动删除与拖拽交互终极指南

Apache Weex UI手势操作组件:滑动删除与拖拽交互终极指南 Apache Weex UI 是一个基于 Vue.js 的跨平台 UI 框架,专门用于构建高性能移动应用。其中,手势操作组件是提升用户体验的关键功能,让应用交互更加自然流畅。😊 …...