4月2日 qt密码生成小程序(可选择生成密码的格式),基于Python框架下的pyqt6

4月2日 密码生成小程序

代码展示:

python 复制代码
import string

from PyQt6.QtWidgets import (
    QApplication, QDialog,QMessageBox
)
from untitled import Ui_PasswordGender
import  sys
import  string  # py模块含有字符
import random

class MyPasswordGenerate(Ui_PasswordGender, QDialog, ):
    def __init__(self):
        super().__init__()

        self.setupUi(self)

        self.show()

        self.pushButton.clicked.connect(
            self.new_password
        )

    def new_password(self):
        site =self.lineEdit_site.text()
        if not site:
            QMessageBox.warning(self,'信息提示','请输入网站名')
            return

        words =[]
        if self.checkBox_upper.isChecked():
            words.append(string.ascii_uppercase * 2)
        # 因为以下默认生成的字符串个数,都是默认的10个,当只勾选一个格式,比如说只选数字,就达不到要求的20个,所以就*2
        if self.checkBox_lover.isChecked():
            words.append(string.ascii_lowercase * 2)

        if self.checkBox_number.isChecked():
            words.append(string.digits * 2)

        if self.checkBox_puc.isChecked():
            words.append(string.punctuation * 2)

        if not words:
            words = (
                string.digits  # 生成数字
                + string.ascii_uppercase  # 生成大写字母
                + string.ascii_lowercase  # 生成小写字母
                + string.punctuation      # 生成标点符号
            )
        else:
            words = "".join(words)

        words = random.sample(list(words), 20)  # list(words)在生成的字符串中,取20个字符
        password = ''.join(words)
        self.lineEdit_resilt.setText(password)   # 把密码写入lineEdit的框中

        with open('我的密码本.txt','a',encoding='utf-8') as f:
            f.write(f'{site}\t{password}\n')

        QMessageBox.information(
            self,'信息提示','密码生成成功'
        )


if __name__ == '__main__':
    app = QApplication(sys.argv)  # 启动应用程序

    myPasswordGenerate = MyPasswordGenerate() # MyPasswordGenerate类中已经有show()了,所以可以直接显示窗口

    sys.exit(app.exec())

ui_Python文件展示:

python 复制代码
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt6 UI code generator 6.4.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_PasswordGender(object):
    def setupUi(self, PasswordGender):
        PasswordGender.setObjectName("PasswordGender")
        PasswordGender.resize(578, 377)
        self.verticalLayout = QtWidgets.QVBoxLayout(PasswordGender)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.lineEdit_site = QtWidgets.QLineEdit(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        font.setBold(True)
        self.lineEdit_site.setFont(font)
        self.lineEdit_site.setObjectName("lineEdit_site")
        self.horizontalLayout.addWidget(self.lineEdit_site)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.checkBox_upper = QtWidgets.QCheckBox(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        self.checkBox_upper.setFont(font)
        self.checkBox_upper.setObjectName("checkBox_upper")
        self.horizontalLayout_2.addWidget(self.checkBox_upper)
        self.checkBox_lover = QtWidgets.QCheckBox(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        self.checkBox_lover.setFont(font)
        self.checkBox_lover.setObjectName("checkBox_lover")
        self.horizontalLayout_2.addWidget(self.checkBox_lover)
        self.checkBox_number = QtWidgets.QCheckBox(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        self.checkBox_number.setFont(font)
        self.checkBox_number.setObjectName("checkBox_number")
        self.horizontalLayout_2.addWidget(self.checkBox_number)
        self.checkBox_puc = QtWidgets.QCheckBox(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        self.checkBox_puc.setFont(font)
        self.checkBox_puc.setObjectName("checkBox_puc")
        self.horizontalLayout_2.addWidget(self.checkBox_puc)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.pushButton = QtWidgets.QPushButton(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        font.setBold(True)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        self.lineEdit_resilt = QtWidgets.QLineEdit(parent=PasswordGender)
        font = QtGui.QFont()
        font.setPointSize(24)
        font.setBold(True)
        self.lineEdit_resilt.setFont(font)
        self.lineEdit_resilt.setObjectName("lineEdit_resilt")
        self.verticalLayout.addWidget(self.lineEdit_resilt)

        self.retranslateUi(PasswordGender)
        QtCore.QMetaObject.connectSlotsByName(PasswordGender)

    def retranslateUi(self, PasswordGender):
        _translate = QtCore.QCoreApplication.translate
        PasswordGender.setWindowTitle(_translate("PasswordGender", "密码生成小程序"))
        self.label.setText(_translate("PasswordGender", "请输入网站名称:"))
        self.checkBox_upper.setText(_translate("PasswordGender", "大写字母"))
        self.checkBox_lover.setText(_translate("PasswordGender", "小写字母"))
        self.checkBox_number.setText(_translate("PasswordGender", "数字"))
        self.checkBox_puc.setText(_translate("PasswordGender", "标点符号"))
        self.pushButton.setText(_translate("PasswordGender", "生成新密码"))

效果展示:

可以以选择生成格式,可多选,也可以都不选(即混合模式)

生成后并存成txt文件中(以追加的方式)

生成打包文件,还是先打开

打包语法之全部打包

shell 复制代码
 pyinstaller -F -w password_generate_main.py # password_generate_main.py是我运行的主程序py文件

打包后运行效果:

相关推荐
谢眠5 分钟前
深度学习day3-自动微分
python·深度学习·机器学习
心怀梦想的咸鱼8 分钟前
UE5 第一人称射击项目学习(四)
学习·ue5
AI完全体12 分钟前
【AI日记】24.11.22 学习谷歌数据分析初级课程-第2/3课
学习·数据分析
z千鑫14 分钟前
【人工智能】深入理解PyTorch:从0开始完整教程!全文注解
人工智能·pytorch·python·gpt·深度学习·ai编程
尘浮生37 分钟前
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
MessiGo38 分钟前
Python 爬虫 (1)基础 | 基础操作
开发语言·python
Mephisto.java1 小时前
【大数据学习 | Spark-Core】Spark提交及运行流程
大数据·学习·spark
肥猪猪爸1 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
PandaCave1 小时前
vue工程运行、构建、引用环境参数学习记录
javascript·vue.js·学习
yuwinter1 小时前
鸿蒙HarmonyOS学习笔记(2)
笔记·学习·harmonyos