tkinter Fenster schliessen geht nicht
Verfasst: Dienstag 31. Dezember 2019, 13:25
Hallo Zusammen,
bei mir schliesst das Haupt-Fenster (die eigentliche Python-Anwendung) mit object.destroy() nicht. Das Unterfenster (von def open_window(self):) schliesst wieder, was sich auch wiederholen lässt. Das Hauptfenster reagiert nach dem destroy Befehl nicht mehr bleibt aber offen: Habe das auch mit Code aus einem anderen Forumbeitrag, der als Lösung eingestellt war probiert:
Wenn ich die Python Shell schliesse ist das Python Fenster mit dem Anwendungsfenster auch geschlossen. Solange die Shell offen ist kann ich das Anwendungsfenster nicht schliessen. Wenn ich BEENDEN klicke, verschwindet das Anwendungsfenster, nach Wechsel auf eine andere APP (z.B. Safari) und zurück auf "Python" ist das Anwedungsfenster wieder da, reagiert aber nicht mehr und der Beenden Button ist blau hinterlegt. Die App Python kann ich gar nicht mit cmd+Q schliessen. Nur durch schliessen der Shell.
Wie kann ich das Anwendungsfenster mit Code schliessen?
Python 3.8.1, tkinter 8.6.8, IDLE 3.8.1 auf MacOS 10.13.16

bei mir schliesst das Haupt-Fenster (die eigentliche Python-Anwendung) mit object.destroy() nicht. Das Unterfenster (von def open_window(self):) schliesst wieder, was sich auch wiederholen lässt. Das Hauptfenster reagiert nach dem destroy Befehl nicht mehr bleibt aber offen: Habe das auch mit Code aus einem anderen Forumbeitrag, der als Lösung eingestellt war probiert:
Code: Alles auswählen
#!/usr/bin/python3
import tkinter as tk
class Mainwindow(tk.Tk):
def __init__(self):
super().__init__()
self.title('root Fenster')
self.window = None
tk.Label(self, text="--> root <--").pack()
tk.Button(self, text='Beenden', command=self.destroy).pack()
tk.Button(self, text='w öffnen', command=self.open_window).pack()
tk.Button(self, text='w beenden', command=self.close_window).pack()
def close_window(self):
self.window.destroy()
def open_window(self):
self.window = tk.Toplevel(self)
tk.Label(self.window, text="--> w <--").pack()
def open_root():
root = Mainwindow()
root.mainloop()
if __name__ == '__main__':
open_root()
Wie kann ich das Anwendungsfenster mit Code schliessen?
Python 3.8.1, tkinter 8.6.8, IDLE 3.8.1 auf MacOS 10.13.16
