für die GUI:
Code: Alles auswählen
from PyQt5 import QtCore, QtGui, QtWidgets
from def_global import Password
class Ui_mainWindow(object):
def __init__(self):
self.letters = "n"
self.digits = "n"
self.punctuation = "n"
def setupUi(self, mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.resize(652, 422)
self.centralwidget = QtWidgets.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label_top = QtWidgets.QLabel(self.centralwidget)
self.label_top.setGeometry(QtCore.QRect(10, 20, 161, 16))
self.label_top.setObjectName("label_top")
self.spin_box_num = QtWidgets.QSpinBox(self.centralwidget)
self.spin_box_num.setGeometry(QtCore.QRect(10, 240, 65, 32))
self.spin_box_num.setMinimum(1)
self.spin_box_num.setProperty("value", 10)
self.spin_box_num.setObjectName("spin_box_num")
self.check_letters = QtWidgets.QCheckBox(self.centralwidget)
self.check_letters.setGeometry(QtCore.QRect(10, 100, 111, 22))
self.check_letters.setObjectName("check_letters")
self.check_digits = QtWidgets.QCheckBox(self.centralwidget)
self.check_digits.setGeometry(QtCore.QRect(10, 130, 101, 22))
self.check_digits.setObjectName("check_digits")
self.check_punctuation = QtWidgets.QCheckBox(self.centralwidget)
self.check_punctuation.setGeometry(QtCore.QRect(10, 160, 111, 22))
self.check_punctuation.setObjectName("check_punctuation")
self.label_num_chars = QtWidgets.QLabel(self.centralwidget)
self.label_num_chars.setGeometry(QtCore.QRect(10, 210, 151, 20))
self.label_num_chars.setObjectName("label_num_chars")
self.btn_create = QtWidgets.QPushButton(self.centralwidget)
self.btn_create.setGeometry(QtCore.QRect(550, 360, 88, 34))
self.btn_create.setObjectName("btn_create")
self.label_sel_chars = QtWidgets.QLabel(self.centralwidget)
self.label_sel_chars.setGeometry(QtCore.QRect(10, 60, 311, 18))
self.label_sel_chars.setAcceptDrops(False)
self.label_sel_chars.setObjectName("label_sel_chars")
self.label_password = QtWidgets.QLabel(self.centralwidget)
self.label_password.setGeometry(QtCore.QRect(10, 310, 621, 18))
self.label_password.setText("")
self.label_password.setObjectName("label_password")
mainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(mainWindow)
self.statusbar.setObjectName("statusbar")
mainWindow.setStatusBar(self.statusbar)
self.retranslateUi(mainWindow)
QtCore.QMetaObject.connectSlotsByName(mainWindow)
self.char_num = self.spin_box_num.value
self.btn_create.clicked.connect(lambda _: self.create_password(self.char_num))
def retranslateUi(self, mainWindow):
_translate = QtCore.QCoreApplication.translate
mainWindow.setWindowTitle(_translate("mainWindow", "Password Generator"))
self.label_top.setText(_translate("mainWindow", "Create a new passoword."))
self.check_letters.setText(_translate("mainWindow", "Letters"))
self.check_digits.setText(_translate("mainWindow", "Digits"))
self.check_punctuation.setText(_translate("mainWindow", "Punctuation"))
self.label_num_chars.setText(_translate("mainWindow", "Number of characters:"))
self.btn_create.setText(_translate("mainWindow", "Create"))
self.label_sel_chars.setText(_translate("mainWindow", "Select the characters the password should contain."))
def create_password(self, char_num):
"""Creates the password"""
if self.check_letters.isChecked():
self.letters = "y"
if self.check_letters.isChecked():
self.digits = "y"
if self.check_punctuation.isChecked():
self.punctuation = "y"
password = Password(char_num, self.letters, self.digits, self.punctuation)
print(password)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QMainWindow()
ui = Ui_mainWindow()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())
Code: Alles auswählen
import secrets, string
class Password:
def __init__(self, char_num:int=10, letters:str = "n", digits:str="n", punctuation:str = "n"):
self.char_num = char_num
self.password_list = []
self.password = ""
self.chars = []
if letters == "y":
for char in string.ascii_letters:
self.chars.append(char)
if digits == "y":
for char in string.digits:
self.chars.append(char)
if punctuation == "y":
for char in string.punctuation:
self.chars.append(char)
if letters != "y" and digits != "y" and punctuation != "y":
print("Error. You need to add at least one type of characters to your password.")
exit()
def create(self) -> str:
"""Creates the password"""
for char in range(self.char_num):
char = secrets.choice(self.chars)
self.password_list.append(char)
self.password = "".join(self.password_list)
return self.password
def __repr__(self):
return self.password