当前位置: 首页 > 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://域名访问返回的证书是过期…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...