예제 코드에는 몇 가지 버그 (*)가 있으며 원하는 작업이 완전히 명확하지 않습니다. 콤보 상자의 현재 값을 드롭 다운 목록에 추가 하시겠습니까, 아니면 다른 곳에서 추가 할 값입니까?
다음은 콤보 상자의 현재 값을 목록에 추가하는 솔루션입니다. 그것은 combobox, 레이블 및 단추 위젯의 기본 제공 버전을 사용합니다. 어떤 콤보 상자 위젯이라도 정확히 비슷하게 작동 할 것입니다.
(*) Button, Label 및 ComboBox는 표준 위젯이 아닙니다. "button", "label"및 "ttk :: combobox"를 의미합니까, 아니면 사용자 정의 위젯을 사용하고 있습니까? 또한, 그리드를 사용하여 콤보 상자 및 레이블을 관리하는 것을 잊었으며, procs는 인수를 기대하고 있지만 당신은 어떤 것도 전달하지 않습니다.)
package require Tk 8.5
set ff [frame .f]
set label [label $ff.label -text "Name:" ]
set name [ttk::combobox $ff.name -textvariable name]
set addButton [button $ff.addButton -text "+" -width 1 \
-command [list addNameToComboBox $name]]
set removeButton [button $ff.removeButton -text "-" -width 1 \
-command [list removeNameFromComboBox $name]]
grid $label $name
grid $ff.addButton -row 0 -column 2 -sticky w
grid $ff.removeButton -row 0 -column 3 -sticky sw -padx 5
pack $ff -side top -fill both -expand true
proc addNameToComboBox {name} {
set values [$name cget -values]
set current_value [$name get]
if {$current_value ni $values} {
lappend values $current_value
$name configure -values $values
}
}
proc removeNameFromComboBox {name} {
set values [$name cget -values]
set current_value [$name get]
if {$current_value in $values} {
set i [lsearch -exact $values $current_value]
set values [lreplace $values $i $i]
$name configure -values $values
}
}
는 TK 많은 콤보 구현이 있습니다
이 솔루션은 TCL/TK 8.5과 내장 TTK :: 콤보 상자 위젯 작동합니다. 내장되어있는 것을 사용하고 있지 않지만 어떤 것을 사용하고 있는지 분명하지 않습니다. 사용중인 콤보 박스 구현을 알려주시겠습니까? –