如何解决TCL TK checkbutton:获取被勾选的按钮列表
我通过 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"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。