tcl / tk编程中的算术命令

时间:2015-12-18 18:38:50

标签: tcl tk

我在tcl \ tk编程。 代码显示以下错误:

"missing operand at _@_
in expression "+_@_""
entry .e1 -textvar a
entry .e2 -textvar b
message .m -textvar c
button .b -text "press here" -command "set c [expr $a+$b]"

错误显示在最后一行。我在tclsh中运行它并显示相同的错误。我也尝试在函数proc中使用它,但是弹出相同的错误。 我正在尝试使用tk进行算术运算。

1 个答案:

答案 0 :(得分:2)

当解释器评估第4行时,它会扩展引用部分的内容,并执行expr命令,并展开ab的内容。但是,这些变量在那个时间点没有价值。您打算在用户单击按钮时评估该命令,但在创建按钮时正在评估该命令。

您需要快速修复:

button .b -text "press here" -command {set c [expr {$a + $b}]}

提供ab是全局的,因为在单击按钮时将在全局命名空间中评估命令。

修复时间越长,您需要仔细阅读Tcl man page,并注意Tcl中引用的""和分组{}表达式之间差异的描述。