升级版密码生成小程序
1.给密码设置不同的网站
2.可以选择大写字母、小写字母、数字、标点符号成分
3.生成后导出到txt文件
关闭原来窗口,选择最近的。
选择密码生成小程序UI。
选择:check box 拖动到窗口中,修改内容为大写字母,右键,布局,分拆布局,复制选择框进行粘贴。
复制文本框,再粘贴一个放到上方。
再放置一个label.命名为:网站名称。
然后调整字体和布局。
把label和选择框全选后字体修改成24号字体。
选中label和上方的输入框,水平布局
选择四个选择框,水平布局。
然后在窗口空白处,垂直布局(指整个页面)
保存UI
命令行。pyuic6 密码生成小程序.ui -o 密码生成小程序.py
在程序中运行结果如图
把第一个输入框名称修改为:lineEdit_wangzhang(注:这里不能输入中文,只能输入英文,下划线前是默认类型,后面是标识字符(这里是网站的拼音)
同样把选择框依次修改为:checkBox_daxie、checkBox_xiaoxie、checkBox_shuzi、checkBox_biaodian。
按钮只有一个,不用修改。
第二个输入框修改为:lineEdit_mima。
保存界面。
再回到PyCharm中修改,刚才已经在界面中修改的变量的名称。
其中原来输入框,现在的第二个输出框,在修改前有黄色背景,变量名称不对导致如图
修改后:
再完善程序。
from PyQt6.QtWidgets import (QApplication,QDialog,QMessageBox)
from 密码生成小程序 import Ui_Dialog
import sys
import random
import string
class MyDialog(Ui_Dialog,QDialog): #这里是让类myDialog继承两个副类的性质。
def __init__(self):
super().__init__()
self.setupUi(self) #此方法来自密码生成小程序
self.show()
self.pushButton.clicked.connect(self.new_password)
def new_password(self):
site=self.lineEdit_wangzhang.text()
if not site:
QMessageBox.warning(self,"信息提示","请输入网站名称")
return
words=[] #新建一个空列表
if self.checkBox_daxie.isChecked():
words.append(string.ascii_uppercase*2)
if self.checkBox_daxie.isChecked():
words.append(string.ascii_lowercase*2)
if self.checkBox_daxie.isChecked():
words.append(string.digits*2)
if self.checkBox_daxie.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)
password = "".join(words)
self.lineEdit_mima.setText(password)
QMessageBox.information(
self, "信息提示", "密码生成成功"
)
if __name__=="__main__":
app=QApplication(sys.argv)
myDialog=MyDialog()
sys.exit(app.exec())
运行结果:
没有输入网站时:
发现一处错误:第一个小写字母,需要修改为大写字母,保存UI,命令行再次转换成py文件,即可。
再次修改程序中的错误后为
from PyQt6.QtWidgets import (QApplication,QDialog,QMessageBox)
from 密码生成小程序 import Ui_Dialog
import sys
import random
import string
class MyDialog(Ui_Dialog,QDialog): #这里是让类myDialog继承两个副类的性质。
def __init__(self):
super().__init__()
self.setupUi(self) #此方法来自密码生成小程序
self.show()
self.pushButton.clicked.connect(self.new_password)
def new_password(self):
site=self.lineEdit_wangzhang.text()
if not site:
QMessageBox.warning(self,"信息提示","请输入网站名称")
return
words=[] #新建一个空列表
if self.checkBox_daxie.isChecked():
words.append(string.ascii_uppercase*2)
if self.checkBox_xiaoxie.isChecked():
words.append(string.ascii_lowercase*2)
if self.checkBox_shuzi.isChecked():
words.append(string.digits*2)
if self.checkBox_biaodian.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)
password = "".join(words)
self.lineEdit_mima.setText(password)
QMessageBox.information(
self, "信息提示", "密码生成成功"
)
if __name__=="__main__":
app=QApplication(sys.argv)
myDialog=MyDialog()
sys.exit(app.exec())
最后,把生成的密码写入记事本,不删除原内容。
from PyQt6.QtWidgets import (QApplication,QDialog,QMessageBox)
from 密码生成小程序 import Ui_Dialog
import sys
import random
import string
class MyDialog(Ui_Dialog,QDialog): #这里是让类myDialog继承两个副类的性质。
def __init__(self):
super().__init__()
self.setupUi(self) #此方法来自密码生成小程序
self.show()
self.pushButton.clicked.connect(self.new_password)
def new_password(self):
site=self.lineEdit_wangzhang.text()
if not site:
QMessageBox.warning(self,"信息提示","请输入网站名称")
return
words=[] #新建一个空列表
if self.checkBox_daxie.isChecked():
words.append(string.ascii_uppercase*2)
if self.checkBox_xiaoxie.isChecked():
words.append(string.ascii_lowercase*2)
if self.checkBox_shuzi.isChecked():
words.append(string.digits*2)
if self.checkBox_biaodian.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)
password = "".join(words)
self.lineEdit_mima.setText(password)
with open("我的密码本.txt","a",encoding="utf8") as f:
f.write(f"{site}\t{password}\n")
QMessageBox.information(
self, "信息提示", "密码生成成功"
)
if __name__=="__main__":
app=QApplication(sys.argv)
myDialog=MyDialog()
sys.exit(app.exec())
在程序保存位置,生成一个记事本。内容如下