4月2日 密码生成小程序
代码展示:
import stringfrom PyQt6.QtWidgets import (QApplication, QDialog,QMessageBox
)
from untitled import Ui_PasswordGender
import sys
import string # py模块含有字符
import randomclass 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,'信息提示','请输入网站名')returnwords =[]if self.checkBox_upper.isChecked():words.append(string.ascii_uppercase * 2)# 因为以下默认生成的字符串个数,都是默认的10个,当只勾选一个格式,比如说只选数字,就达不到要求的20个,所以就*2if 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文件展示:
# 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, QtWidgetsclass 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.translatePasswordGender.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文件中(以追加的方式)
生成打包文件,还是先打开
打包语法之全部打包
pyinstaller -F -w password_generate_main.py # password_generate_main.py是我运行的主程序py文件
打包后运行效果: