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
