Seite 1 von 1

tkinter Fenster schliessen geht nicht

Verfasst: Dienstag 31. Dezember 2019, 13:25
von Segelbär
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:

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()
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

Bild

Re: tkinter Fenster schliessen geht nicht

Verfasst: Dienstag 31. Dezember 2019, 13:44
von __deets__
Du darfst den Code nicht aus IDLE heraus ausführen. Das ist selbst in Tk implementiert & damit kommen sich IDE und dein Skript in die Quere. Bei GUI Entwicklung IMMER per Shell starten.

Re: tkinter Fenster schliessen geht nicht

Verfasst: Dienstag 31. Dezember 2019, 14:43
von Segelbär
Danke _deets_ für die schnelle Antwort,

meinst du aus der IDLE Shell oder aus einen MacOS Terminal?

Gruß
Sven

Re: tkinter Fenster schliessen geht nicht

Verfasst: Dienstag 31. Dezember 2019, 14:46
von Sirius3
Aus dem Terminal heraus.

Re: tkinter Fenster schliessen geht nicht

Verfasst: Dienstag 31. Dezember 2019, 15:43
von Segelbär
Danke!!