2016-01-06 122 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}