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