选中Tcl / Tk tablelist标题中的所有复选框

时间:2014-12-15 12:06:19

标签: checkbox tcl tk

如何在tcl / tk Tablelist的标头内实现一个复选框,以实现select all功能。我找不到任何资源。有可能用任何方法吗?请指导。

1 个答案:

答案 0 :(得分:1)

我绕过了这个问题,因为我没有找到任何在tablelist标头中添加小部件的直接方法。 我使用了两个16x16 png图像(一个未经检查的框Unchecked;另一个复选框Checked)作为-labelimage,使用labelcommand切换。

通过这种方式,用户可以了解单击该框的操作(实际上是整个标题)。 enter image description here

示例代码:(未优化)

package require Tk
package require tablelist
package require Img

namespace eval ::test {
    variable toggleState 0
}
proc onClick {tbl col} {
if {$::test::toggleState==0} {
    .tbl columnconfigure 0 -labelimage .image.uncheckedbox
    ## ENTER YOUR CODE HERE TO DESELECT ALL CHECKBOX IN CELL WINDOW OF 0th COLUMN.
    set ::test::toggleState 1
} else {
    .tbl columnconfigure 0 -labelimage .image.checkedbox
    ## ENTER YOUR CODE HERE TO SELECT ALL CHECKBOX IN CELL WINDOW OF 0th COLUMN.
    set ::test::toggleState 0
}

}

tablelist::tablelist .tbl -columntitles {col1 col2 col3} -height 10 -width 100 -stretch all -stripebackground #e0e8f0
grid .tbl -padx 5 -pady 5 -sticky news

    image create photo .image.checkedbox -file {E:\path\checked.png}
    image create photo .image.uncheckedbox -file {E:\path\unchecked.png}

.tbl columnconfigure 0 -labelimage .image.uncheckedbox -labelcommand onClick