2016-01-06 95 views
0

请帮我决定TCL中listbox的问题。 我创建的下一个列表框: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

当您在列表框中选择一个项目时,它会将<<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}