Login klappt in Python nicht. Was tun?
Hi,
ich habe letztens angefangen, mit Python zu programmieren und dachte, es wäre eine tolle Idee eine Login-Funktion in Tkinter zu erstellen. Mein Code sieht wie folgt aus:
Mein Problem ist jetzt, wenn ich auf „Login“ drücke kriege ich nur „Falscher Nutzername oder Passwort!“.
Weiß jemand vielleicht woran das liegt?
Danke im voraus.
2 Antworten
Bei jedem Nutzer, der kein "" oder Admin ist, läuft die Login-Funktion immer in den else-Zweig. Du brauchst noch einen Zweig, der bspw. aus der Datenbank Nutzername und Passwort vergleicht und dann einen Nutzer duchlässt. So ist jeder Benutzer automatisch im Falscher Nutzername oder Passwort-Zweig
Ja, verstehe. Wie überprüfst du denn ob alles richtig in die Felder eingegeben wurde? Du musst dir ja irgendwie das Passwort von einem Nutzer merken?
Ahso, du willst dich nur als Admin anmelden. Dann musst du userName und userPw global in der Funktion machen und global davor schreiben
Ich nehme an, du gibst Admin und test korrekt ein
Mein Problem ist jetzt, wenn ich auf „Login“ drücke kriege ich nur „Falscher Nutzername oder Passwort!“.
Weiß jemand vielleicht woran das liegt?
lass dir doch mal den Inhalt der beiden Variablen direkt vor der Benutzung ausgeben.
So wie ich das sehe, überschreibst du userName und userPw in deiner mainscreen()-Funktion mit einem Objekt des Typs Entry. Du vergleichst den String mit dem Objekt, nicht mit dessen Inhalt
das habe ich mir auch gedacht. Dazu muss man das ja so schreiben:
if userName.get()=="Admin" and userPw.get()==""test"
aber wenn ich das mache kriege ich ne fehler meldung:
AttributeError: 'NoneType' object has no attribute 'get
Da hast du dann dein Problem: userName und userPw haben den Wert "None" ... können also nicht Admin und test sein
Vermutung, dass du davor noch global userName und global userPw schreiben musst, wenn du diesen Ansatz verwenden willst
Allgemein sollte man jedoch globale Variablen vermeiden. Bündel alles in eine Klasse und arbeite dort mit Klassenvariablen
Brauch ich denn unbedingt eine Datenbank dafür? Also ich habe mir Videos dazu angeguckt und die haben es auch ohne Datenbank gemacht.