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文件

打包后运行效果:

相关推荐
ROBOT玲玉10 分钟前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
虾球xz1 小时前
游戏引擎学习第55天
学习·游戏引擎
Kai HVZ1 小时前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神1 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python
V+zmm101341 小时前
基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
oneouto1 小时前
selenium学习笔记(二)
笔记·学习·selenium
B站计算机毕业设计超人1 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
还这么多错误?!1 小时前
uniapp微信小程序,使用fastadmin完成一个一键获取微信手机号的功能
微信小程序·小程序·uni-app
路人甲ing..1 小时前
jupyter切换内核方法配置问题总结
chrome·python·jupyter