Passwortgenerator mit GUI verbinden
Verfasst: Montag 11. März 2019, 15:23
Hallo Leute,
ich habe einen kleinen Passwortgenerator geschrieben. Diesem möchte ich jetzt eine GUI basteln.
Der Code des Passwortgenerators sieht wie folgt aus:
Statt der Zeichenauswahl per Eingabe möchte ich das ganze über Checkboxen regeln. Ich hab mich mal ein bisschen versucht und die GUI aufgebaut, hier der Code:
Was mir jetzt noch fehlt ist eine Verbindung zwischen Logik und GUI. Leider bekomme ich schon beim auslesen der Passwortlänge einen Fehler. (AttributeError: 'NoneType' object has no attribute 'get')'
Der Fehler wird in der Zeile ausgelöst, in der ich versuche das Entry auszulesen. Hier mal mein kompletter Code bis jetzt. Bin über JEDE Kritik dankbar.
Und wie kann ich jenachdem welche Checkbox ausgewählt ist die dazugehörige Liste mitgeben?
Mit freundlichen Grüßen
Jankie
ich habe einen kleinen Passwortgenerator geschrieben. Diesem möchte ich jetzt eine GUI basteln.
Der Code des Passwortgenerators sieht wie folgt aus:
Code: Alles auswählen
from random import randint
import string
KLEINBUCHSTABEN = list(string.ascii_lowercase)
GROSSBUCHSTABEN = list(string.ascii_uppercase)
ZAHLEN = list(string.digits)
SONDERZEICHEN = list(string.punctuation)
def erstelle_passwort(passwortlaenge, zeichen_liste):
passwort = ""
for i in range(passwortlaenge):
passwort += zeichen_liste[randint(0, len(zeichen_liste))]
#print(zeichen_liste[randint(0, len(zeichen_liste))], end ="")
print(passwort)
passwortlaenge = int(input("\nPasswortlänge: "))
zeichenauswahl = int(input(
"""\nWelche Zeichen sollen vorkommen?
1 - Nur Kleinbuchstaben
2 - Nur Großbuchstaben
3 - Nur Zahlen
4 - Nur Sonderzeichen
5 - Alle
Auswahl: """))
if zeichenauswahl == 1:
zeichen_liste = KLEINBUCHSTABEN
erstelle_passwort(passwortlaenge, zeichen_liste)
elif zeichenauswahl == 2:
zeichen_liste = GROSSBUCHSTABEN
erstelle_passwort(passwortlaenge, zeichen_liste)
elif zeichenauswahl == 3:
zeichen_liste = ZAHLEN
erstelle_passwort(passwortlaenge, zeichen_liste)
elif zeichenauswahl == 4:
zeichen_liste = SONDERZEICHEN
erstelle_passwort(passwortlaenge, zeichen_liste)
elif zeichenauswahl == 5:
zeichen_liste = KLEINBUCHSTABEN + GROSSBUCHSTABEN + ZAHLEN + SONDERZEICHEN
erstelle_passwort(passwortlaenge, zeichen_liste)
else:
print("Keine gültige Eingabe!")
Code: Alles auswählen
from tkinter import *
master = Tk()
Label(master, text="Passwortlaenge: ").grid(row=0, sticky=W)
eingabefeld_passwortlaenge = Entry(master).grid(row=1, sticky=W)
Label(master, text="Welche Zeichen soll das Passwort enthalten?").grid(row=2, sticky=W)
var1 = IntVar()
Checkbutton(master, text="Kleinbuchstaben", variable=var1).grid(row=3, sticky=W)
var2 = IntVar()
Checkbutton(master, text="Grossbuchstaben", variable=var2).grid(row=4, sticky=W)
var3 = IntVar()
Checkbutton(master, text="Zahlen", variable=var3).grid(row=5, sticky=W)
var4 = IntVar()
Checkbutton(master, text="Sonderzeichen", variable=var4).grid(row=6, sticky=W)
Button(master, text='Generate', command=erstelle_passwort(passwortlaenge, zeichen_liste).grid(row=7, sticky=W, pady=8))
ausgabefeld_passwort = Entry(master).grid(row=8, sticky=W)
mainloop()
Der Fehler wird in der Zeile ausgelöst, in der ich versuche das Entry auszulesen. Hier mal mein kompletter Code bis jetzt. Bin über JEDE Kritik dankbar.
Code: Alles auswählen
from tkinter import *
from random import randint
import string
KLEINBUCHSTABEN = list(string.ascii_lowercase)
GROSSBUCHSTABEN = list(string.ascii_uppercase)
ZAHLEN = list(string.digits)
SONDERZEICHEN = list(string.punctuation)
master = Tk()
def erstelle_passwort():
passwort = ""
passwortlaenge = eingabefeld_passwortlaenge.get()
zeichen_liste = KLEINBUCHSTABEN
for i in range(passwortlaenge):
passwort += zeichen_liste[randint(0, len(zeichen_liste))]
ausgabefeld_passwort.insert(passwort)
Label(master, text="Passwortlaenge: ").grid(row=0, sticky=W)
eingabefeld_passwortlaenge = Entry(master).grid(row=1, sticky=W)
Label(master, text="Welche Zeichen soll das Passwort enthalten?").grid(row=2, sticky=W)
var1 = IntVar()
Checkbutton(master, text="Kleinbuchstaben", variable=var1).grid(row=3, sticky=W)
var2 = IntVar()
Checkbutton(master, text="Grossbuchstaben", variable=var2).grid(row=4, sticky=W)
var3 = IntVar()
Checkbutton(master, text="Zahlen", variable=var3).grid(row=5, sticky=W)
var4 = IntVar()
Checkbutton(master, text="Sonderzeichen", variable=var4).grid(row=6, sticky=W)
Button(master, text='Generate', command=erstelle_passwort()).grid(row=7, sticky=W, pady=8)
ausgabefeld_passwort = Entry(master).grid(row=8, sticky=W)
mainloop()
Mit freundlichen Grüßen
Jankie