Tcl 如何通过-textvariable更新标签

Tcl 如何通过-textvariable更新标签,tcl,tk,Tcl,Tk,我键入了这样的脚本: set cmakeBinName "noname" proc Get_CMakeBin { } { set cmakeBinName [ tk_getOpenFile -initialdir / ] } label .l -text { CMake bin: } label .lb -width 24 -textvariable $cmakeBinName button .cmb -text "..." -command Get_CMakeBin grid .l

我键入了这样的脚本:

set cmakeBinName "noname"
proc Get_CMakeBin { } {
    set cmakeBinName [ tk_getOpenFile -initialdir / ]
}
label .l  -text { CMake bin: }
label .lb -width 24 -textvariable $cmakeBinName
button .cmb -text "..." -command Get_CMakeBin
grid .l .lb .cmb
但对话框完成后,标签中的文本不会更改。
如何改进脚本?

除非另有明确说明,否则过程中的变量是局部变量。试试这个:

proc Get_CMakeBin { } {
    global cmakeBinName
    set cmakeBinName [ tk_getOpenFile -initialdir / ]
}
您还应该知道
-textvariable
选项采用的是变量名,而不是内容。你应该这样写:

label .lb -width 24 -textvariable cmakeBinName

除非另有明确说明,否则过程中的变量是局部变量。试试这个:

proc Get_CMakeBin { } {
    global cmakeBinName
    set cmakeBinName [ tk_getOpenFile -initialdir / ]
}
您还应该知道
-textvariable
选项采用的是变量名,而不是内容。你应该这样写:

label .lb -width 24 -textvariable cmakeBinName