Python 重置主GUI窗口

Python 重置主GUI窗口,python,tkinter,Python,Tkinter,我只想关闭并重新打开我的主程序。我想在单击下拉菜单中的“新建”类似选项时调用它。类似于调用root.destroy()然后重新启动主循环 如何完成此操作?如果您使用的是Unix,请使用os.execv重新启动整个应用程序。确保传递所有命令行参数等。如果您在Unix上,请使用os.execv重新启动整个应用程序。确保传递所有命令行参数等。您可以将所有GUI构建逻辑和初始状态代码从主循环中取出,并将其放入函数中。从mainloop调用这些函数(类似于:buildgui()&initstate()),

我只想关闭并重新打开我的主程序。我想在单击下拉菜单中的“新建”类似选项时调用它。类似于调用root.destroy()然后重新启动主循环


如何完成此操作?

如果您使用的是Unix,请使用os.execv重新启动整个应用程序。确保传递所有命令行参数等。

如果您在Unix上,请使用os.execv重新启动整个应用程序。确保传递所有命令行参数等。

您可以将所有GUI构建逻辑和初始状态代码从主循环中取出,并将其放入函数中。从mainloop调用这些函数(类似于:buildgui()&initstate()),然后,当用户单击菜单图标时,只需调用initstate(),将其设置回应用程序首次启动时的状态。

您可以将所有GUI构建逻辑和初始状态代码从mainloop中取出并放入函数中。从mainloop调用这些函数(类似于:buildgui()&initstate()),然后,当用户单击菜单图标时,只需调用initstate()将其设置回应用程序首次启动时的状态。

至少有三种方法可以解决此问题

方法一:头部假。创建应用程序时,不要将所有小部件都放在根窗口中。相反,隐藏根窗口并创建表示应用程序的新顶级。当您重新启动时,只需销毁新的顶层并重新运行所有启动逻辑即可

方法二:核爆和铺筑。在概念上相似,但在执行上略有不同。在这个模型中,当您想要重新启动时,只需删除主窗口中的所有小部件,将几何体重置为null(这样窗口将再次根据其内容调整自身大小),然后运行绘制所有其他小部件的逻辑

方法三:如果它第一次起作用…如Martin v。Löwis,只需让您的程序执行程序的一个新实例,然后退出


前两种方法可能更快,并且具有(dis?)保护当前环境的优势。例如,您可以保存剪贴板副本、列宽等。第三种方法绝对可以保证一张白板。

至少有三种方法可以解决此问题

方法一:头部假。创建应用程序时,不要将所有小部件都放在根窗口中。相反,隐藏根窗口并创建表示应用程序的新顶级。当您重新启动时,只需销毁新的顶层并重新运行所有启动逻辑即可

方法二:核爆和铺筑。在概念上相似,但在执行上略有不同。在这个模型中,当您想要重新启动时,只需删除主窗口中的所有小部件,将几何体重置为null(这样窗口将再次根据其内容调整自身大小),然后运行绘制所有其他小部件的逻辑

方法三:如果它第一次起作用…如Martin v。Löwis,只需让您的程序执行程序的一个新实例,然后退出


前两种方法可能更快,并且具有(dis?)保护当前环境的优势。例如,您可以保存剪贴板的副本、列宽等。第三种方法绝对可以保证一张白板。

+1:聪明;实际重新启动,而不是重新启动的等价物。+1:聪明;实际上是重新启动,而不是等效的重新启动。