微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TCL TK checkbutton:获取被勾选的按钮列表

如何解决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 举报,一经查实,本站将立刻删除。