tk/tcl 中的列表框

Listbox in tk/tcl

请帮我解决 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

如何在不使用按钮 "butt1" 的情况下自动更改标签 "label1" 的内容?

我希望 "label1" 的内容在我单击其中一个列表项时立即更改。

谢谢!

当您 select 列表框中的项目时,它会将 <<ListboxSelect>> 发送给自己。您可以绑定到此以对 selection 变化做出反应:

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}