Hi Paul!
Peak_me hat geschrieben:
funktioniert nicht.
Damit entfernst Du auch nur das canvas-Objekt von seinem Elternwidget. Um das Programm zu beenden, muss, wie weiter oben erwähnt, das Wurzelobjekt zerstört werden. Damit wird automatisch auch die Eventverarbeitung (mainloop) deaktiviert. Das machst Du am besten mit
Das Tk-Hauptfenster wird automatisch erzeugt, wenn Du einen Tkinter.Canvas ohne Angabe eines Elternknotens instanzierst - sofern es nicht schon existierte. An das direkte Elternwidget kommst Du über canvas.master, aber wenn canvas ein verschachteltes Widget ist, findest Du die Wurzel direkt mit canvas._root(). Die Variante mit time.sleep(10) funktioniert auch, das Fenster reagiert dann aber nicht auf Events. Wenn das erwünscht ist, kannst Du auch Deine Variante in Kombination mit canvas._root verwenden.
Das canvas.quit() ist eigentlich schwächer, da es 'nur' die event-Schleife beendet. In Deinem Fall verhindert aber nur die Tkinter-mainloop das Beenden des Programms. Wenn Du sie unterbrichst, endet das Programm und allein das Aufräumen entsorgt dann das Tk-Wurzelobjekt inklusive aller Kinder.
Also alles ganz logisch.
VG,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...