TCL TK checkbutton:获取选中的按钮列表
TCL TK checkbutton: get checked button list
我通过 for 循环创建了复选按钮列表。
foreach tb $tbs {
checkbutton .tb_q.q.{$tb} -text $tb -command onClick \
-onvalue true -offvalue false -variable selected
}
在 proc onClick 中,我需要找出选中了哪些复选按钮。
proc onClick {} {
global selected
# Find out all the selected checkboxes index
......
}
问题是我无法在此处设置 -变量选择。因为使用 for 循环,每个复选按钮都会使用这个变量。
我想找出选中的复选按钮的索引。怎么做?
谢谢。
一种方法是使用数组而不是普通变量,然后遍历数组的元素。演示程序:
#!/usr/bin/env wish
set names {a b c d}
foreach b $names {
checkbutton .cb_$b -text $b -command onClick -variable selected($b)
pack .cb_$b
}
button .quit -text Quit -command exit
pack .quit
proc onClick {} {
global selected
set chosen {}
foreach {name val} [array get selected] {
if {$val} {
lappend chosen $name
}
}
set chosen [lsort $chosen]
puts "Selected buttons: $chosen"
}
我通过 for 循环创建了复选按钮列表。
foreach tb $tbs {
checkbutton .tb_q.q.{$tb} -text $tb -command onClick \
-onvalue true -offvalue false -variable selected
}
在 proc onClick 中,我需要找出选中了哪些复选按钮。
proc onClick {} {
global selected
# Find out all the selected checkboxes index
......
}
问题是我无法在此处设置 -变量选择。因为使用 for 循环,每个复选按钮都会使用这个变量。
我想找出选中的复选按钮的索引。怎么做?
谢谢。
一种方法是使用数组而不是普通变量,然后遍历数组的元素。演示程序:
#!/usr/bin/env wish
set names {a b c d}
foreach b $names {
checkbutton .cb_$b -text $b -command onClick -variable selected($b)
pack .cb_$b
}
button .quit -text Quit -command exit
pack .quit
proc onClick {} {
global selected
set chosen {}
foreach {name val} [array get selected] {
if {$val} {
lappend chosen $name
}
}
set chosen [lsort $chosen]
puts "Selected buttons: $chosen"
}