1

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

4

2 回答 2

4

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

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

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

于 2012-05-21T09:58:47.620 回答
1

我曾经使用过这样的东西,暴露在调试菜单中:(警告未测试!)

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

它(希望)销毁所有子小部件,然后通过资源脚本重新创建它们,假设这是当前脚本所做的。

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

于 2012-05-21T10:28:22.923 回答