1
我不能bind
Escape
和Return
鍵在我的Tcl/Tk代碼。以下代碼重現了該錯誤。當我打Esc
或Enter
鍵我收到以下錯誤信息:Tcl/Tk:無法綁定到轉義和返回
錯誤:無法讀取「CMD」:沒有這樣的變量
proc OkCancel { cmd } {
button .${cmd}.ok -text "OK" -command [list myOk $cmd ]
button .${cmd}.cancel -text "Cancel" -command [list myCancel .$cmd]
grid .${cmd}.ok .${cmd}.cancel -sticky e
bind .$cmd <Return> { myOk $cmd ; break }
bind .$cmd <Escape> { myCancel .${cmd} ; break }
}
proc myOk { cmd } {
puts "The command name is = $cmd"
}
proc myCancel { arg } {
destroy $arg
}
proc test { } {
set cmd "hello"
toplevel .$cmd
OkCancel $cmd
}
test
感謝您的詳細解釋和修復錯誤! – Anand
'subst'命令可以取代'list'。因爲'list'可以在腳本的情況下做不必要的轉義。 – GrAnd
@GrAnd:通常不會; 'list'通常比'subst'好,用於生成綁定腳本(和其他回調),因爲它更容易正確使用,_provided_你生成一個單一的命令。 (這個問題有一個棘手的情況,我會使用'[list ...] \; break'或甚至使用'return-code break'完成回調過程。) –