我只是想关闭的等价和重新打开我的主程序。我想调用它被点击从下拉菜单中选择“新建”般的选项时。像调用root.destroy(),然后重新启动所述主循环。

我怎样才能得到这个工作?

有帮助吗?

解决方案

您可以把你所有的GUI构建逻辑和初始状态代码移出主循环,并把它变成功能。从主循环调用这些函数(类似:buildgui()INITSTATE()),当用户点击你的菜单图标,然后,只需调用INITSTATE()来设置回就像是当应用程序首次启动

其他提示

有就可以解决这个至少在三个方面。

方法一:的头假即可。当你创建你的应用程序,不要把所有的部件在根窗口。相反,隐藏根窗口,并创建一个代表你的应用程序中的新的顶级。当您重新启动它只是一个破坏的事情是新的顶级并重新运行所有的启动逻辑。

方法二:的核弹和铺平即可。在概念上类似,但在执行中略有不同。在这个模型中,当你要重新启动您只需删除所有的部件在主窗口中,重置几何为空(所以窗口将再次调整本身基于它的内容),然后运行,吸引了所有其他部件的逻辑

方法三:如果它工作在第一时间... 作为建议由马丁五世Löwis,只是让你的程序执行的是程序的新实例,然后退出。

前两种方法是可能更快,具有保存当前环境的(DIS?)的优势。例如,你可以保存剪贴板,列的宽度等。第三方法绝对保证为空白状态。的拷贝

如果你是在Unix上,重新启动与os.execv整个应用程序。请确保您通过了所有的命令行参数等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top