Tcl/tk Button - 如何在命令选项上传递变量?

mil*_*epa 5 variables tk-toolkit tcl button

我在命令选项上传递变量时遇到问题,例如:

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
Run Code Online (Sandbox Code Playgroud)

但是按钮0放1代替0.看来当按钮0被调用时,它取当时变量的值为1.

我弄清楚我可以使用一个过程和一个全局变量来实现所需的结果,但我想知道是否有可能在不诉诸过程调用的情况下实现这一点.

先感谢您.

gle*_*man 6

如果要在定义回调时替换变量的当前值,则需要使用不同的引用机制:

button .button.$count -text $count -command [list puts $count]
Run Code Online (Sandbox Code Playgroud)