Tcl/tk 我怎么知道什么时候选择了哪个单选按钮?

Tcl/tk How can i know when and which radiobutton is selected?

我一直在为看似微不足道的事情而苦苦挣扎=(

我需要知道选择了哪个单选按钮,以便我可以启用和禁用我的条目。

radiobutton .t.r1 -text "Default" -variable reptype -value 0
radiobutton .t.r2 -text "Custom" -variable reptype -value 1
.t.r1 select    

place .t.r1 -x 20 -y 30
place .t.r2 -x 20 -y 50

entry .t.ecustom -width 70 
place .t.ecustom -x 100 -y 50

if { $reptype == 0 } {
    .t.ecustom configure -state normal
} elseif { $reptype == 1 } {
    .t.ecustom configure -state disabled
}

这就是我正在尝试的,在这里和那里更改一些位,但结果永远不是我想要的,在这个例子中 reptype 变量无法识别。

您可以对变量使用跟踪,或使用 -command 回调。在你的情况下,我建议使用 -command 回调。

set ::reptype 0
radiobutton .t.r1 -text "Default" -variable reptype -value 0 -command entrystate
radiobutton .t.r2 -text "Custom" -variable reptype -value 1 -command entrystate
entry .t.ecustom -state disabled
grid .t.r1
grid .t.r2 .t.ecustom
grid columnconfigure .t 1 -weight 1

proc entrystate {} {
    if {$::reptype} {
        .t.ecustom configure -state normal
    } else {
        .t.ecustom configure -state disabled
    }
}