@AntiSchurke: Als totaler Anfänger sollte man IMHO nicht mit GUI-Programmierung anfangen. Dazu braucht man objektorientierte Programmierung (OOP). Dafür ist halbwegs sicherer Umgang mit Funktionen Voraussetzung. Für die sollte man die Kontrollstrukturen für den Programmablauf wie bedingte Ausführung, Schleifen, und Ausnahmebehandlung können.
Das heisst wenn man mit GUI anfängt, muss man das alles auf einmal lernen plus den ereignisbasierten Ablauf den so ein GUI-Rahmenwerk zusätzlich mit sich bringt.
Zum Quelltext:
Sternchen-Importe sind Böse™. Tkinter wird üblicherweise mit ``import tkinter as tk`` importiert und die Namen aus dem Modul dann über ``tk`` referenziert. Also beispielsweise `tk.Label` statt nur `Label`.
Die Namensschreibweise entspricht nicht dem
Style Guide for Python Code und man sollte keine teilweise kryptischen Präfixe wie `lbl`, `txt`, oder `bu` verwenden. Namen sollten deutlich sagen was der Wert dahinter bedeutet. Also zum Beispiel `login_button` statt dem Rätsel `buLogin`.
Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Keine globalen Variablen. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Man muss sich für eine Layoutmethode entscheiden. Wenn man auf einem Anzeigeelement mehr als eine aufruft, dann ”gewinnt” der letzte Aufruf, man kann sich die anderen also sparen. Bevor Du jetzt aber die `pack()`-Aufrufe entfernst: `place()` ist keine gute Idee. Absolute Grössen- und Positionsangaben für Fenster und Anzeigeelemente funktionieren oft nur auf dem Rechner wo man das ausprobiert hat oder solchen mit sehr ähnlichen Einstellungen. Bei der heutigen Vielfalt von Displaygrössen und Auflösungen ist es ziemlich wahrscheinlich das die GUI bei anderen komisch/falsch aussieht, oder sogar unbenutzbar ist, wenn sich Anzeigeelemente gegenseitig überlappen oder gar verdecken. Deine GUI sieht bei mir zum Beispiel so aus:
Zudem macht es sehr viel Aufwand wenn man auf einer GUI wo schon so einiges absolut platziert ist, irgendwo noch etwas eingefügt, entfernt, oder in der Grösse verändert werden muss, und man dadurch alles mögliche weitere anpassen und verschieben muss. Deswegen überlässt man die Anordnung und Fenstergrösse dem GUI-Rahmenwerk. Also bei Tkinter innerhalb eines Container-Widgets (Fenster oder `Frame`) `pack()` *oder* `grid()` für alle Elemente. Und bei `pack()` innerhalb des Container immer die gleiche `side`, es sei denn man weiss genau was man da macht.
`frame` wird in Deinem Programm definiert, dann aber nicht benutzt.
Auch wenn Tk eigentlich nur Zeichenketten als Datentyp kennt, würde ich auf Python-Seite Zahlen auch als Zahlen schreiben und nicht als Zeichenketten, denn Python macht da einen deutlicheren Unterschied.
Zum eigentlichen Problem: Da wo jetzt der Syntaxfehler ist, weil ein Wert fehlt, muss eine Funktion oder Methode angegeben werden, die dann ausgeführt wird wenn der Benutzer auf die „Registrieren“-Schaltfläche klickt. Und in dieser Funktion oder Methode muss dann der Code stehen der das zweite Fenster öffnet. Ich würde an der Stelle einen Dialog von `tkinter.simpledialog.SimpleDialog` ableiten, dann braucht man sich nicht um die ganzen Details kümmern selber einen modalen Dialog zu programmieren.