Tcl 在命令行应用程序中使用Tk小部件

Tcl 在命令行应用程序中使用Tk小部件,tcl,tk,Tcl,Tk,我们只是遇到了与Tcl和Tk差异相关的问题 我们有一个使用tcltest框架传输xml数据的测试工具 一般程序流程: 读入xml文件并生成DOM树(使用tdom) 运行测试(使用tcltest,测试生成日志输出,即使用相关信息设置数组) 读取和处理日志信息 准备带有日志信息的latex文件 使用pdflatex生成pdf 在一个新的测试中,我们希望在文档中包含一个图形。因此,我们在测试设置中加载Tk,在画布上准备图形,并将画布写入文件。这一切在一个独立的测试程序中都可以正常工作 但是我们观察

我们只是遇到了与Tcl和Tk差异相关的问题

我们有一个使用tcltest框架传输xml数据的测试工具

一般程序流程:

  • 读入xml文件并生成DOM树(使用tdom)

  • 运行测试(使用tcltest,测试生成日志输出,即使用相关信息设置数组)

  • 读取和处理日志信息

  • 准备带有日志信息的latex文件

  • 使用pdflatex生成pdf

在一个新的测试中,我们希望在文档中包含一个图形。因此,我们在测试设置中加载Tk,在画布上准备图形,并将画布写入文件。这一切在一个独立的测试程序中都可以正常工作

但是我们观察到,集成到应用程序中,测试被执行,程序在测试文件末尾没有错误地结束,但从未返回到主程序来执行最后三个步骤。??? 如果应用程序的剩余代码源代码到测试文件中,程序将正常继续执行。有人知道会出什么问题吗

提前谢谢
joachim

当您加载Tk时,它会安装一个处理程序,在脚本执行完成后运行事件循环。这是因为这就是
wish
计划至少20年来的运作方式;Tcl(逻辑上)用于设置应用程序和处理回调。对于大多数GUI应用程序,这是绝对正确的。在你的情况下不是


一旦生成了所需的输出,就应该在脚本的末尾添加一个显式的退出;通过学习将注意力集中在更接近问题真正所在的地方(为什么我的Tcl/Tk脚本没有退出?)可以获得更好的结果。谢谢Donal,我做得对吗,解决方案是将程序分为两个独立的程序:一个运行所有测试,另一个使用Tk生成图片的独立程序。抱歉说得不够清楚,我也很困惑。@joheid从你的描述中我想那就是你已经在做的事情!?(正确描述问题至关重要。)