使用Wish应用程序打开Tcl文件

使用Wish应用程序打开Tcl文件,tcl,tk,Tcl,Tk,我正在运行Windows8。我有一个名为“test.tcl”的文件 如果我打开一个外壳,键入“wish”,然后打开两个窗口。在其中一个示例中,我可以键入Tcl代码并打开文件test.Tcl。如果我打开这个文件,它的代码就会被执行 如果我双击test.tcl打开带有“Wish Application”的文件,则会打开一个空白窗口,但什么也没有发生 你知道为什么吗?在Windows上,Wish是作为一个仅GUI的应用程序构建的;它没有真正的标准输出可用。Tk为你伪造了一个;只需在脚本中添加以下内

我正在运行Windows8。我有一个名为“test.tcl”的文件

  • 如果我打开一个外壳,键入“wish”,然后打开两个窗口。在其中一个示例中,我可以键入Tcl代码并打开文件test.Tcl。如果我打开这个文件,它的代码就会被执行
  • 如果我双击test.tcl打开带有“Wish Application”的文件,则会打开一个空白窗口,但什么也没有发生

你知道为什么吗?

在Windows上,Wish是作为一个仅GUI的应用程序构建的;它没有真正的标准输出可用。Tk为你伪造了一个;只需在脚本中添加以下内容即可显示假控制台:

console show
默认情况下,当您在不使用脚本文件的情况下启动时,会显示假控制台,但使用脚本文件启动时不会显示假控制台(当然,这样您的脚本文件就可以实现应用程序)


当人们在
stdout
上产生大量输出时,这可能会让他们大吃一惊。Tk很可能会忠实地保存这一切,以防以后代码
控制台显示
,尽管如果您没有做好准备,它看起来和闻起来都很像内存泄漏…

您确定什么都没有发生吗?在第二种情况下,test.tcl中的代码应该执行,当执行完成时会出现窗口。我看不到“a”。这是因为您看到的窗口不是标准输出(默认的输出通道是输入)。尝试创建一个文本文件,比如
setf[open“output.txt”w];关闭$f
,您将看到一个文件出现,表示代码已执行。您可以在开始时打开该文件,然后在关闭之前使用
put$f a
将所有内容放入该文件中。您将在该文件中看到输出。给定“内存泄漏”注释,是否有空间执行
console clear
console delete index1?index2?
命令?