Tcl / Tk绝对简单的Hello World示例失败-无效的命令名称“按钮”

时间:2019-05-09 12:39:38

标签: button tcl tk

我正在尝试遵循wiki Tcl lang page上的教程/代码片段。

  • 但是不幸的是,无论如何,如果我在文本文件 hello_world.tcl 中编写以下代码,如下所示:
#! /usr/local/bin/wish
button .hello -text "Hello, World!" -command { exit }
pack .hello

它出现以下错误:

  

$ tclsh hello_world.tcl
  无效的命令名称“按钮”
      在执行
  “按钮.hello -text”你好,世界!“ -command {exit}”
     (文件“ hello_world.tcl”第4行)


  • 或者如果我启动 tkcon 并重复同样的操作,则会收到以下通知:

enter image description here

,然后按 retry ,我得到了:

enter image description here

这不是我想要的。

我只想要一个带有“ Hello World”的简单按钮,单击该按钮将关闭执行脚本/命令时启动的窗口。

搜索术语“在Tcl中加载Tk” 或类似内容并没有帮助。

在两种情况下如何获得可行的示例?

2 个答案:

答案 0 :(得分:3)

似乎Tcl文件已配置为由 tclsh (默认情况下不会加载Tk程序包)而非 wish (确实会加载Tk)运行)。最简单的解决方法是在脚本的开头显式加载它:

package require Tk

在所有情况下;那么您要么按预期工作,要么出现明显的失败,提示无法加载Tk(而不是一条更神秘的消息,说没有button命令)。


通常,推荐的方法是:

#! /usr/bin/env wish

package require Tk

button .hello -text "Hello, World!" -command { exit }
pack .hello

因为这样可以在路径上找到wish而不是硬编码到特定位置。

答案 1 :(得分:2)

您需要先加载Tk,换句话说:

#! /usr/local/bin/wish
package require Tk      ;# This line

button .hello -text "Hello, World!" -command { exit }
pack .hello