重置主GUI窗口

时间:2009-04-08 21:14:42

标签: python tkinter

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

我怎样才能完成这项工作?

3 个答案:

答案 0 :(得分:4)

至少有三种方法可以解决这个问题。

方法一:假头。创建应用程序时,请勿将所有小部件放在根窗口中。而是隐藏根窗口并创建一个代表您的应用程序的新顶层。当你重新启动它时,只需要破坏新的顶层并重新运行所有启动逻辑。

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

方法三:如果它第一次工作...... 正如Martinv.Löwis建议的那样,只需让你的程序执行一个新的程序实例,然后退出。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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