私のおすすめは、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] } } |