combobox

Tcl/TKコアにはcomboboxのWidgetがありませんが、
最近はBWidgetなどのMegaWidgetが使えるようになっています。

私のおすすめは、Bryan Oakleyさん作成のcomboboxです。
かなり古くからあるので、完成度も高くTcl/TK 8.0以上で動作するようです。
100% Pure Tclで記述されているので、マルチプラットフォームで動作します。

インストール

インストールは簡単です。 combobox-2.3.zipまたはcombobox-2.3.tar.gzを解凍し、
combobox-2.3のフォルダをTcl/libフォルダにコピーするだけです。

使い方

使い方は簡単です。2つの変数を使うのが特徴です。

combobox combobox
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]
    }
}

サンプル

以下は、comboboxに添付されているフォント選択のサンプルスクリプト(example.tcl)です。

example.tcl

マニュアル