请帮我解决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"的内容当我点击其中一个列表项时,它会立即改变。
谢谢!
答案 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}