Es gibt mindestens drei Möglichkeiten, wie Sie das lösen können.
Methode eins: der Kopf gefälscht. Wenn Sie Ihre App erstellen, fügen Sie nicht alle Widgets in das Hauptfenster ein. Verstecken Sie stattdessen das Hauptfenster und erstellen Sie ein neues Toplevel, das Ihre Anwendung darstellt. Wenn Sie neu starten, ist es nur eine Frage des Zerstörens dieses neuen Toplevels und der erneuten Ausführung all Ihrer Startlogik.
Methode zwei: Nuke und ebnen. Ähnlich im Konzept, aber etwas anders in der Ausführung. Wenn Sie in diesem Modell neu starten möchten, löschen Sie einfach alle Widgets im Hauptfenster, setzen die Geometrie auf null zurück (so wird das Fenster wieder auf der Basis des Inhalts angepasst) und dann die Logik ausführen, die alle anderen Widgets zeichnet .
Methode drei: Wenn es das erste Mal funktioniert ... Wie von Martin v. Löwis vorgeschlagen, einfach Ihr Programm eine neue Instanz des Programms ausführen, dann beenden.
Die ersten beiden Methoden sind möglicherweise schneller und haben den (ungünstigen) Vorteil, die aktuelle Umgebung zu erhalten. Zum Beispiel könnten Sie die Kopie der Zwischenablage, Spaltenbreiten usw. speichern. Die dritte Methode garantiert absolut eine unbeschriebene Tafel.
+1: Clever; tatsächlich neu starten statt äquivalent zum Neustart. –