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

news2024/9/29 3:19:36

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 sys


class 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 random


class 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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

急中生智:献血200cc没事,为啥出血200cc就可能噶?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 外伤出血更常见,但同样可能危及生命。 众所周知,出血是一种常见的外伤和急症&…

家装服务管理:Java技术的创新应用

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

ONLYOFFICE 桌面编辑器 v8.0 更新内容详细攻略

文章目录 引言PDF 表单RTL 支持电子表格中的新增功能Moodle 集成用密码保护 PDF 文件从“开始”菜单快速创建文档本地界面主题下载安装桌面编辑工具总结 引言 官网链接: ONLYOFFICE 官方网址 ONLYOFFICE 桌面编辑器是一款免费的文档处理软件,适用于 Li…

APP被针对攻击了,要怎么解决

随着APP行业的兴起,游戏公司异军突起,不管是在控证还是攻击方面都是属于最复杂的一个场面,游戏APP逐渐成为DDOS流量攻击的“重灾区”。没有提前做好了解就盲目进军游戏APP行业,一旦被攻击就会让公司束手无策。那么,刚上…

基于springboot实现的海鲜销售系统

一、系统架构 前端:html | bootstrap | vue | js | css 后端:springboot | springdata-jpa 环境:jdk1.8 | mysql | maven | redis 二、代码及数据库 三、功能介绍 01. web端-注册 02. web端-登录 03. web端-首页 04. web端-…

k8s节点负载使用情况分析命令kubectl describe node [node-name]

1.到任意安装了kubectl节点命令的节点上执行kubectl describe node [node-name] 上面的Requests最小分配 Limits最大分配是所有pod之和,最小分配之和不能超过服务器实际参数,否则新的pod会因为资源不够起不来,最大分配是预设之和&#xff0…

移动端学习:如何把exe转换成apk

exe转换成apk是怎么实现的呢?-电脑端-一门科技将exe文件转换成apk文件是一个比较常见的需求,尤其是对于一些开发者和用户来说。但是,这个过程并不是简单的复制和粘贴。在本文中,我们将介绍exe转换成apk的原理和详细介绍。首先,我们需要了解什么https://www.yimenapp.net/k…

数据安全-动态加密(不同敏感字段使用不同的加密算法-MySQL、Oracle版本)

动态数据加密 动态加密(也称实时加密,透明加密等,其英文名为encrypt on-the-fly),是指数据在使用过程中自动对数据进行加密或解密操作,无需用户的干预,合法用户在使用加密的文件前,…

服务器权限:Error: EACCES: permission denied, open‘/Cardiac/uniquC.csv

背景: 我想在服务器上传一个文件uniquC.csv,但是服务器说我没有权限 解决方案: 1. 查看目前是否存在对文件夹的权限 ls -ld /Cardiac/ # your fold path 此时,我发现 这也意味着root也没有赋予写的权限。 2. 拿到root权限 …

Python爬虫-模拟Github登录并获取个人信息

爬虫系列:http://t.csdnimg.cn/WfCSx 前言 很多情况下,页面的某些信息需要登录才可以查看。对于爬虫来说,需要爬取的信息如果需要登录才可以看到的话,那么我们就需要做一些模拟登录的事情。 在前面我们了解了会话和 Cookies 的…

人脸2D和3D道具SDK解决方案提供商

人脸识别和增强现实技术成为了许多企业和开发者关注的焦点,为了满足市场对高质量、易于集成的人脸识别SDK的需求,美摄科技推出了一系列领先的人脸2D/3D道具SDK解决方案。 一、产品特点 高精度识别:美摄科技的人脸识别技术采用深度学习算法&…

【博士每天一篇文献-综述】A Modified Echo State Network Model Using Non-Random Topology

阅读时间:2023-11-23 1 介绍 年份:2023 作者: Arroyo, Diana Carolina Roca,数学与计算机科学研究所(ICMC)圣保罗大学 (USP) 期刊: 博士论文 引用量:0 这篇论文是一篇博士论文&am…

PostgreSQL 与MySQL 对比使用

一、前言 博主的系统既有 用到MySQL 也有用到PostgreSQL ,之所以用到这两种数据库,主要是现在都是国产替代,虽然说这两款数据库也不是国产的,但是相对开源,oracle是不让用了。所以现在使用比较多的就是这两个关系型数据…

geotools解析shp 提示 opengis.*.SimpleFeatureType‘ 不在其界限内

问题:( geotools.version:31-SNAPSHOT) 解析shp文件时提示类型SimpleFeatureType不在其界限内 解决: 在引用处将org.opengis.feature.simple.SimpleFeatureType 改为 org.geotools.api.feature.simple.SimpleFeatureType

Web JavaScript

目录 1 前言2 原生js常见用法2.1 弹窗操作2.2 for循环操作2.3 打印日志操作2.4 获取页面值操作2.5 判空操作2.6 修改页面内容操作2.7 网页版计算器制作 3 外部js常见用法4 总结 1 前言 JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能…

jvm面试题目补充

jdk&jre Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit)。 把Java API类库中的Java SE API子集 [1] 和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持…

缓存一致性问题的解决策略

缓存一致性问题的背景和概念介绍 在一个系统中,我们通常使用数据库来存储数据,以保证数据的持久性。但是,由于数据库的读写速度相对较慢,如果每次请求都直接访问数据库,会降低系统的响应速度。为了提高系统的性能&…

进行模型测量这种量出来坡面的是平面面积还是真实面积?

斜面面积,不是表面积。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。 #DasViewer##实景三维##三维重建##三维模型…

产品经理学习-产品运营《什么是SOP》

目录 什么是SOP 如何执行SOP 执行SOP的重点 什么是SOP SOP就是项目流程操作的说明书 日常工作中的例行操作: 例行操作是指,在每一天,针对每一个用户,在每个项目之中,都必须完成的操作,这些必须完成的操…

Java 的静态代理和动态代理

文章目录 1. 代理设计模式1.1 为什么需要代理设计模式1.2 代理设计模式1.2.1 概念1.2.2 名词解释1.2.3 代理开发的核⼼要素 2. 静态代理2.1 编码2.2 静态代理存在的问题 3. 动态代理3.1 Spring动态代理的概念3.2 动态代理细节分析3.3 动态代理的实现3.3.1 JDK 动态代理3.3.2 CG…