KeinE Funktion bei zweitem Fenster

Fragen zu Tkinter.
Antworten
Nobuddy
User
Beiträge: 1019
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen

Mein Problem ist, daß ich von meinem Hauptfenster ein zweites Fenster öffne, um damit zu arbeiten.
Im zweiten Fenster ist eine Listbox, die das Auswahlkriterium an ein Testfenster das mit grid erstellt ist, weiter geben soll.
Wenn ich das zweite Fenster direkt starte, also nicht über das Hauptfenster, funktioniert alles prima.
Starte ich das zweite Fenster über das Hauptfenster, so öffnet sich zwar dieses, aber die Datenübergabe aus der Listbox an das Textfenster funktioniert nicht.

Ich habe dazu 3 Dateien. Das erste ist das Hauptfenster die 'start_gui.py', mit 3 Buttons die jeweils die Datei 'gui_listbox_work.py' ansteuert, das zweite Fenster. Die dritte Datei ist die 'gui_list_names.py', die Daten an das zweite Fenster übergibt.

Damit Ihr selbst testen könnt was ich meine, könnt Ihr die 3 Dateien hier https://gist.github.com/4046428 anschauen und testen.

Könnt Ihr mir sagen, warum dies so nicht funktioniert, obwohl beim direkten Starten von 'gui_listbox_work.py' dies funktioniert?
Welche Möglichkeiten habe ich, um das Problem zu lösen?

Grüße Nobuddy
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Nobuddy

Jetzt ist es wieder übersichtlicher. In einem Tkinter Skript darfst du tk.Tk() nur einmal aufrufen um mit dem Hauptfenster zu beginnen. Für weitere Fenster musst du das Toplevel Widget verwenden. Somit ist die Modifikation very simple. Ersetze in der Datei gui_listbox_work.py die Zeile:

Code: Alles auswählen

self.root = tk.Tk()
durch

Code: Alles auswählen

self.root = tk.Toplevel()
die Methode run:

Code: Alles auswählen

    def run(self):
        self.root.mainloop()
braucht es nicht mehr.

Gruß wuf :wink:
Take it easy Mates!
Nobuddy
User
Beiträge: 1019
Registriert: Montag 30. Januar 2012, 16:38

Hallo wuf,

hätte nicht gedacht, daß die Lösung so einfach ist, funktioniert super! :wink:
Einfach genial, jetzt kann ich an meinem Projekt weitermachen. :D

Danke und Grüße Nobuddy
Antworten