2012-05-29 40 views
2

我在TCL按鈕-Command在for循環(沒有這樣的變量)

for {set i 1} {$i <= $user} {incr i} { 
    grid [ttk::button .seluser.$i -text "$i" -command { set ::user $i }] -column $i -row 1 
} 

得到這個小循環週期,我得到消息

錯誤無法讀取「我「:沒有這樣的變量

我想這是因爲-command作品像一個新的進程內,這就是爲什麼它不能識別變量i

我不知道該怎麼做。有誰能夠幫助我?

回答

2

嘗試引號而不是大括號,以便$i是預插值的。例如,

for {set i 1} {$i <= $user} {incr i} { 
    grid [ttk::button .seluser.$i -text "$i" -command " set ::user $i "] -column $i -row 1 
} 
+2

建議練習使用'list'構造定義時間替代命令,如下所示:'[list set :: user $ i]'。這是推薦的,因爲它被系統地保證是正確的(Tcl喜歡構建也是免替換命令的列表)並且執行速度更快(基本上,該值可以攜帶證據,證明不需要解析)。 –

+0

這將是很好的討論*爲什麼*引號工作,而不是大括號 –