Существует по крайней мере три способа решения этой проблемы.
Способ первый: подделка головы. Когда вы создаете приложение, не помещайте все виджеты в корневое окно. Вместо этого скройте корневое окно и создайте новый верхний слой, который представляет ваше приложение. Когда вы перезагружаете, это просто вопрос уничтожения этого нового уровня и повторного запуска всей вашей логики запуска.
Метод второй: nuke и pave. Похож на концепцию, но немного отличается в исполнении. В этой модели, когда вы хотите перезагрузить, вы просто удалите все виджеты в главном окне, сбросьте геометрию до нуля (чтобы окно снова изменило размер на основе его содержимого), а затем запустите логику, которая рисует все остальные виджеты ,
Метод три: если он сработал в первый раз ... Как предложил Мартин против Льюис, просто попросите свою программу выполнить новый экземпляр программы, а затем выйдите.
Первые два метода потенциально быстрее и имеют преимущество (dis?) Сохранения текущей среды. Например, вы можете сохранить копию буфера обмена, ширины столбцов и т. Д. Третий метод абсолютно гарантирует чистый сланец.
+1: Умный; на самом деле перезапустить вместо эквивалента перезапуска. –