ich habe ein Hauptfenster und zwei Buttons. Drücke ich im Hauptfenster auf XXX, dann soll ich ein Subfenster öffnen, dass auch zwei Buttons hat.
Drücke ich nun wieder im Hauptfenster auf Button XXX, dann soll die Beenden-Methode (do_exit) der Klasse Buttons ausgeführt und das Subfenster geschlossen werden. Ebenso, wenn ich im Button-Fenster der Klasse Button auf Beenden klicke, soll die Funktion do_exit ausgeführt werden.
Leider beendet sich nicht nur das Subfenster, sondern auch mit das Hauptfenster. Das Subfenster habe ich mit tk.Toplevel erzeugt, weil ich las, dass man damit ein neues zweites Fenster parallel zum Hauptfenster der GUI erstellen kann.
Könntet ihr mir einen Tipp geben, was ich falsch mache oder welche Funktionen ich alternativ in der Klasse Buttons anstatt von .quit und .destroy benutzen soll, die zum Abschalten der gesamten Anwendung führen? Ich würde mich sehr über Eure Hilfe freuen.
Code: Alles auswählen
try:
import tkinter as tk
except:
import Tkinter as tk
from functools import partial
class Buttons():
def __init__(self, master):
self.master=master
self.button1 = tk.Button(self.master, text="Button 1", command=self.do_button1)
self.exitbutton = tk.Button(self.master, text="Beenden", command=self.do_exit)
self.button1.pack()
self.exitbutton.pack()
def do_button1(self):
print("Button 1 gedrueckt")
def do_exit(self):
self.master.quit()
self.master.destroy()
print ("Buttons beendet!")
class MainFrame():
def __init__(self):
self.root = tk.Tk()
self.state=False
start_class_button = tk.Button(self.root, text="XXX", command=self.do_start_class, width=20)
exit_button = tk.Button(self.root, text="beenden", command=self.do_exit, width=20)
start_class_button.pack()
exit_button.pack()
self.root.mainloop()
def do_exit(self):
self.root.quit()
self.root.destroy()
def do_start_class(self):
if self.state==False:
print ("starte Subfenster...")
self.buttons = Buttons(tk.Toplevel())
self.state=True
else:
print ("schließe Subfenster...")
self.state=False
myframe = MainFrame()
print ("Programm beendet")