Ich versuche, eine GUI zu erstellen, die ein Kennwort erstellt, und ich habe so weit wie das Erstellen des Kennworts und damit es in einem Etikett angezeigt. Wenn Sie jedoch mehrmals auf die Schaltfläche klicken, wird das alte Passwort nicht gelöscht, sondern nur überlagert. Ich bekomme auch einen Fehler, den ich anscheinend nicht berichtigen kann, obwohl er die GUI nicht zu beeinflussen scheint.Python Tkinter Etikett aktualisieren
Der Code ist so weit:
from tkinter import *
import random
myGui = Tk()
myGui.geometry('300x200+700+250')
myGui.title('Password Generator')
def passwordgen():
password = ''
for i in range(8):
##----runs the for loop 8 times
if (i == 0) or (i == 4):
password = password + chr(random.randint(97, 122))
if (i == 1) or (i == 5):
password = password + chr(random.randint(65, 90))
if (i == 2) or (i == 6):
password = password + chr(random.randint(48, 57))
if (i == 3) or (i == 7):
password = password + chr(random.randint(33, 47))
passLabel = Label(myGui, text=password)
passLabel.grid(row=0, column=1, sticky=E)
genPassBtn = Button(myGui, text="Generate Password", command=passwordgen)
genPassBtn.bind("<Button-1>", passwordgen)
genPassBtn.grid(row=0, column=0, sticky=W)
myGui.mainloop()
Der Fehler, den ich erhalten ist:
return self.func(*args)
TypeError: passwordgen() takes 0 positional arguments but 1 was given
Das Ergebnis i zu erreichen bin der Hoffnung, ist ein GUI zu erstellen, die ein Passwort erzeugt, erzeugt einen Hash Wert für generiertes Passwort, prüft die Passwortstärke, lädt den generierten Hash in eine Textdatei und kann das Passwort dann gegen gespeicherte Hashes verifizieren.
Weiter auf jetzt und von Beratung erhalten habe ich den Code geändert und hinzugefügt, um die Stärke zu überprüfen. Der Code sieht jetzt so aus:
from tkinter import *
import random
myGui = Tk()
myGui.geometry('300x200+700+250')
myGui.title('Password Generator')
def passwordgen():
password = ''
for i in range(8):
##----runs the for loop 8 times
if (i == 0) or (i == 4):
password = password + chr(random.randint(97, 122))
if (i == 1) or (i == 5):
password = password + chr(random.randint(65, 90))
if (i == 2) or (i == 6):
password = password + chr(random.randint(48, 57))
if (i == 3) or (i == 7):
password = password + chr(random.randint(33, 47))
strPassword.set(password)
def checkPassword():
strength = ['Blank', 'Very Weak', 'Weak', 'Medium', 'Strong', 'Very Strong']
score = 1
password = strPassword.get()
if len(password) < 1:
return strength[0]
if len(password) < 4:
return strength[1]
if len(password) >= 8:
score += 1
if re.search('[0-9]', password):
score += 1
if re.search('[a-z]', password) and re.search('[A-Z]', password):
score += 1
if re.search('.', password):
score += 1
passwordStrength.set(strength[score])
genPassBtn = Button(myGui, text="Generate Password", command=passwordgen)
strPassword = StringVar()
lblPassword = Label(myGui, textvariable=strPassword)
lblPassword.grid(row=0, column=1, sticky=W)
genPassBtn.grid(row=0, column=0, sticky=W)
passwordStrength = StringVar()
checkStrBtn = Button(myGui, text="Check Strength", command=checkPassword)
checkStrBtn.grid(row=1, column=0)
checkStrLab = Label(myGui, textvariable=passwordStrength)
checkStrLab.grid(row=1, column=1)
myGui.mainloop()
Vielen Dank scotty. Kann ich jetzt strPassword verwenden und die Stärke überprüfen? – JSmith
Ich bin nicht sicher, was Sie mit Stärke meinen, aber Sie können strPassword.get() verwenden, um den Inhalt der Zeichenfolge für andere Zwecke zu verwenden – scotty3785
Ich wollte sagen, dieses Passwort ist sehr schwach, schwach, mittel, stark usw. .. Gegen eine Reihe von Argumenten wie, hat Kleinbuchstaben, Großbuchstaben, Zahlen oder Sonderzeichen. – JSmith