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

打包后运行效果:

相关推荐
R-G-B3 分钟前
OpenCV Python——Numpy基本操作(Numpy 矩阵操作、Numpy 矩阵的检索与赋值、Numpy 操作ROI)
python·opencv·numpy·numpy基本操作·numpy 矩阵操作·numpy 矩阵的检索与赋值·numpy 操作roi
细节处有神明9 分钟前
Jupyter 中实现交互式图表:ipywidgets 从入门到部署
ide·python·jupyter
小小码农一只10 分钟前
Python 爬虫实战:玩转 Playwright 跨浏览器自动化(Chromium/Firefox/WebKit 全支持)
爬虫·python·自动化
数据皮皮侠44 分钟前
最新上市公司业绩说明会文本数据(2017.02-2025.08)
大数据·数据库·人工智能·笔记·物联网·小程序·区块链
深盾安全1 小时前
Python脚本安全防护策略全解析(上)
python
杜子不疼.1 小时前
《Python学习之使用标准库:从入门到实战》
开发语言·python·学习
search71 小时前
前端学习 10 :SOC设计中的验证
学习
胡耀超2 小时前
从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
人工智能·python·数据挖掘·大模型·特征工程·crisp-dm螺旋认知·批判性思维
艾莉丝努力练剑2 小时前
【C语言16天强化训练】从基础入门到进阶:Day 1
c语言·开发语言·数据结构·学习
tomelrg2 小时前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis