ich habe eine größere Anwendung und möchte aus dieser ein neues Fenster starten. Dem neuen Fenster wird ein Dictionary mitgegeben, in das neue Daten geschrieben werden sollen. In dem Fenster werden dann die Daten eingegeben. Wird das Fenster wieder geschlossen, so soll an die Hauptanwendung das geänderte Dictionary (mit den neuen Daten)zurückgegeben werden.
Leider wird das Dictionary erst zurückgegeben, wenn die Hauptanwendung geschlossen wird. Ich habe dazu ein kleines Beispiel gebastelt:
Beispiel Hauptfenster:
Code: Alles auswählen
# -*- coding: iso-8859-15-*-
import Tkinter as tk
import eingabefenster as ef
class Hauptfenster:
def __init__(self):
self.maindic = dict()
self.oberflache()
def oberflache(self):
self.root = tk.Tk()
self.frame = tk.Frame(self.root)
self.frame.pack()
self.neu = tk.Button(self.frame, text = 'Eingabe', command = self.eingabe)
self.neu.pack()
self.root.mainloop()
def eingabe(self):
print self.maindic
ef.Eingabe(self.maindic)
print self.maindic # 2. print-Anweisung sollte das Dictionary wiedergeben
if __name__ == '__main__':
Hauptfenster()
Code: Alles auswählen
# -*- coding: iso-8859-15-*-
# Beispiel für die Datei eingabefenster.py
import Tkinter as tk
class Eingabe:
def __init__(self, maindic):
self.maindic = maindic
self.root = tk.Toplevel()
self.frame = tk.Frame(self.root)
self.frame.pack()
self.en1 = tk.Entry(self.frame, width = 6)
self.en1.pack()
self.en2 = tk.Entry(self.frame, width = 6)
self.en2.pack()
self.bu1 = tk.Button(self.frame, text = 'Übernehmen', command = self.ubernehmen)
self.bu1.pack()
self.bu2 = tk.Button(self.frame, text = 'Beenden', command = self.ende)
self.bu2.pack()
self.root.mainloop()
def ubernehmen(self):
self.maindic[self.en1.get()] = self.en2.get()
def ende(self):
self.root.destroy()

Wie bekomme ich so etwas gebacken?
Stephan