我是tcl / tk的新手,需要在cadence的遭遇中运行脚本。为此,我在提供的解释器中获取文件并调用我的函数。在第一次运行它工作正常。但是,一旦我关闭了用Tk创建的主窗口,并尝试重新运行我的方法,它告诉我它不能调用wm
命令,因为应用程序已被销毁。如何在不重新启动tcl解释器的情况下重新运行脚本?
答案 0 :(得分:4)
关闭主窗口是问题所在,它将Tk置于不可恢复的状态,只能跟随退出。
尝试绑定到WM_DELETE消息,只需隐藏/图标化主窗口'。'或使用额外的顶层窗口而不是默认的'。'窗口。
根据您的脚本,您可能需要做更多的事情,因为一些小部件/名称在运行两次时可能已经存在。
答案 1 :(得分:1)
我曾经使用类似的东西,在调试菜单中公开:(警告未经测试!)
proc Restart {} {
foreach w [winfo children .] {
destroy $w
}
source [info script]
}
(希望)会破坏所有子窗口小部件,然后通过为脚本提供资源来重新创建它们,假设这是当前脚本的作用。
但这将取决于你如何构建窗户,正如schlenk建议的那样