【发布时间】:2013-01-22 19:06:52
【问题描述】:
我在命令选项上传递变量时遇到问题,例如:
package require Tk
wm withdraw .
destroy .button
toplevel .button
# button.0: puts 0
set count 0
button .button.$count -text $count -command {puts $count}
grid .button.$count -column $count -row 0
# button.1: puts 1
incr count
button .button.$count -text $count -command {puts $count}
grid .button.$count -column $count -row 0
但是 button.0 将 1 而不是 0。似乎在调用 button.0 时,它采用了当时变量的值,即 1。
我发现我可以使用过程和全局变量来实现所需的结果,但我想知道是否可以在不诉诸过程调用的情况下实现这一目标。
提前谢谢你。
【问题讨论】:
-
请注意,对于任何真正复杂的事情,添加过程调用实际上可以简化事情。