ich habe ein Problem bei der Programmierung von mehreren Fenstern und habe daher einmal ein Beispielprogramm geschrieben. Darin möchte ich über Buttons nacheinander 3 Fenster öffnen und schließlich im dritten Fenster eine Auswahl treffen die ich dann im ersten Fenster weiterverarbeite.
Dabei habe ich folgende Probleme:
1) wenn ich das Programm durchlaufen lasse und im dritten Fenster die Auswahl treffe wird immer ein neues erstes Fenster erzeugt. Das möchte ich aber nicht. Es soll das gleiche, erste Fenster erhalten und modifiziert werden. Die Zeile haupt = hauptfenster.wertuebernehmen(hauptfenster(Tk()), self.a) wird wohl falsch sein. Ich weiß aber nicht wie ich es ändern muss.
2) Ich habe in dem Programm mal zwei "Möglichkeiten" auskommentiert wie man meiner Meinung nach die alten Fenster schließen können müsste.
Wenn ich das self.master2.destroy() in class zweites() ausführen lasse, wird das zweite Fenster wie gewünscht gelöscht, allerdings wird das dritte auch nicht mehr geladen. Wenn ich versuche in der class drittes() das zweite Fenster über zweites.master2.destroy() zu schließen bekomme ich die Fehlermeldung AttributeError: type object 'zweites' has no attribute 'master2'
Irgendwie fehlt noch das Grundverständniss. Ich komme leider nicht so oft zum Programmieren. Hoffe daher das ihr mir weiterhelfen könnt mit Erklärungen und evtl. auch links oder Buchempfehlungen.
Danke im Vorraus!!!!
Gruß
Holger
Code: Alles auswählen
from tkinter import *
class hauptfenster():
def __init__(self,master):
self.master= master
self.master.geometry("1300x500+40+40")
self.master.title("Hauptfenster")
self.fra1= Frame(self.master)
self.fra1.pack()
self.button1= Button(self.fra1,text= "zweites Fenster", command=self.ladezweites)
self.button1.pack()
self.label1=Label(self.fra1,text="Hallo")
self.label1.pack()
def ladezweites(self):
root2= Toplevel(self.master)
myGui=zweites(root2)
def wertuebernehmen(self,rech2):
print(rech2)
self.rechnen(rech2)
def rechnen(self,rech2):
self.label1["text"]=rech2
class zweites():
def __init__(self,master):
self.master2 = master
self.master2.geometry("200x200+20+20")
self.master2.title("Zweites Fenster")
#ima = PhotoImage(file='test.gif')
self.label = Label(self.master2)
self.label.pack()
self.button1= Button(self.master2,text= "drittes Fenster", command=self.ladedrittes)
self.button1.pack()
def ladedrittes(self):
root3=Toplevel(self.master2)
myGui=drittes(root3)
#self.master2.destroy()
class drittes():
def __init__(self,master):
self.master3 = master
self.master3.geometry("200x200+20+20")
self.master3.title("drittes")
self.rech= StringVar()
self.fenster = Frame(self.master3)
self.fenster.pack()
self.radio1=Radiobutton(self.fenster, text="1", variable =self.rech, value = "1")
self.radio1.pack()
self.radio2=Radiobutton(self.fenster, text="2", variable =self.rech, value = "2")
self.radio2.pack()
self.radio1.select()
self.button1= Button(self.fenster,text= " auslesen", command=(self.auslesen))
self.button1.pack()
self.rech2=""
#zweites.master2.destroy
def auslesen(self):
self.a=self.rech.get()
haupt = hauptfenster.wertuebernehmen(hauptfenster(Tk()), self.a)
root = Tk()
hauptfenster(root)
root.mainloop()
[code]