私のおすすめは、Bryan Oakleyさん作成のcomboboxです。
かなり古くからあるので、完成度も高くTcl/TK 8.0以上で動作するようです。
100% Pure Tclで記述されているので、マルチプラットフォームで動作します。
package require combobox
namespace import combobox::*
set var {りんご みかん ぶどう}
set cur [lindex $var 0]
pack [combobox .combo -listvar var -textvariable cur -editable false]
|
値を編集可能にするには、-editable trueにするか-editableオプションを省略すればよい。
ドロップダウンリストから値が選択された場合は、-commandで指定したプロシジャが実行される。
プロシジャの第1引数にはcomboboxのパスが、第2引数には選択した値が渡ってくる。
package require combobox
namespace import combobox::*
set var {りんご みかん ぶどう}
set cur [lindex $var 0]
pack [combobox .combo -listvar var -textvariable cur -editable true -command change]
proc change {args} {
if {[lsearch $::var [lindex $args 1]] == -1} {
# 選択した値がリストにない場合は追加する
lappend ::var [lindex $args 1]
}
}
|