tcl tk重新运行应用程序而不重新启动解释器

时间:2012-05-21 09:31:37

标签: tkinter tcl tk

我是tcl / tk的新手,需要在cadence的遭遇中运行脚本。为此,我在提供的解释器中获取文件并调用我的函数。在第一次运行它工作正常。但是,一旦我关闭了用Tk创建的主窗口,并尝试重新运行我的方法,它告诉我它不能调用wm命令,因为应用程序已被销毁。如何在不重新启动tcl解释器的情况下重新运行脚本?

2 个答案:

答案 0 :(得分:4)

关闭主窗口是问题所在,它将Tk置于不可恢复的状态,只能跟随退出。

尝试绑定到WM_DELETE消息,只需隐藏/图标化主窗口'。'或使用额外的顶层窗口而不是默认的'。'窗口。

根据您的脚本,您可能需要做更多的事情,因为一些小部件/名称在运行两次时可能已经存在。

答案 1 :(得分:1)

我曾经使用类似的东西,在调试菜单中公开:(警告未经测试!)

proc Restart {} {
   foreach w [winfo children .] {
       destroy $w
   }
   source [info script]
}

(希望)会破坏所有子窗口小部件,然后通过为脚本提供资源来重新创建它们,假设这是当前脚本的作用。

但这将取决于你如何构建窗户,正如schlenk建议的那样