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文件
打包后运行效果: