GUI

Python Tkinter widgets 基本的なウィジェット(8) Combobox

コンボボックスウィジェットは、項目と選択肢のリストを組み合わせたもの。ユーザーは提供された値のセットから選択することも、独自の値を入力することもできる。

selection_var = StringVar()
combo = ttk.Combobox(parent, textvariable=selection_var)

エントリーと同様に、textvariableオプションは、プログラム中の変数をコンボボックスの現在値にリンクさせる。他のウィジェットと同様に、リンクされた変数は自分のコードで初期化する必要がある。

コンボボックスは <<ComboboxSelected>>  仮想イベントを生成し、その値が変更されるたびにバインドすることができる。(textvariableの変更をトレースすることもできる。)

combo.bind('<<ComboboxSelected>>', function)

事前定義された値

values設定オプションを使用して、ユーザーが選択できる値のリストを設定する。

combo['values'] = ('A', 'B', 'C')

readonly stateフラグを設定すると、ユーザーは定義済みの値のリストからしか選択できなくなり、独自の値を入力できなくなる(ただし、コンボボックスの現在の値がリストにない場合は、変更できない)。

combo.state(["readonly"])

また、getメソッドで現在値を取得し、setメソッド(引数は1つで新しい値)で現在値を変更できる。

getメソッドとsetメソッドを補完するために、currentメソッドを使用して、定義済み値リストのどの項目が選択されているかを判断することもできる。currentを引数なしで呼び出すと、リスト内の0ベースのインデックスが返され、現在の値がリストにない場合は-1が返される。0ベースのインデックスを1つ引数としてcurrentを呼び出すと、リスト内の項目を選択することができる。