列表框在tk / tcl中

时间:2016-01-06 15:49:30

标签: listbox tcl tk

请帮我解决TCL中列表框的问题。 我创建了下一个列表框:

listbox .lb1 -height 6 -width 10 -selectmode browse
.lb1 insert 0 "String 1" "String 2" "String 3" "String 4" "String 5" "String  6"

label .label1 -text [.lb1 get active]
button .butt1 -text "enter" -command {.label1 configure -text [.lb1 get active]}
pack .label1 .lb1 .butt1 -expand yes -fill both

如何自动更改标签内容" label1"没有使用按钮" butt1" ?

我想要" label1"的内容当我点击其中一个列表项时,它会立即改变。

谢谢!

1 个答案:

答案 0 :(得分:2)

当您在列表框中选择一个项目时,它会将<<ListboxSelect>>发送给自己。您可以绑定到此以对选择更改做出反应:

bind .lb1 <<ListboxSelect>> {.label1 configure -text [.lb1 get active]}

请注意,您也非常接近建议使用帮助程序的程度。即使对于这样简单的事情,也可以使编写,测试和调试变得更容易。

proc SelectionHappened {listbox label} {
    set activeItem [$listbox get active]
    $label configure -text $activeItem
}
bind .lb1 <<ListboxSelect>> {SelectionHappened .lb1 .label1}