Spinboxは上下矢印ボタンが付いた1行のテキストボックスで、主に矢印を用いて事前に設定された範囲でユーザーに値(または文字列)を設定してもらうためのウィジェットです。また、選択するだけでなくボックス内へ直接値を入力することもできます。
【スポンサーリンク】
Spinboxの設定・値取得方法
-10 ~ 10の範囲の整数値を選択できるSpinboxを作成し、その値をラベルに反映させる例を示します。
実行するとLabelとSpinboxが表示されます。Spinboxの上下矢印をクリックすると設定した範囲内(-10~10)で数値を変化させることができ、その値はラベルに反映されます。
Spinboxで設定できる数値の上下限と変化量を設定するには、from_
、to
と、increment
をそれぞれ設定します。今回の例では、-10から10の間で1ずつ変化するように設定を行っています。そして、command
パラメータでSpinboxの上下矢印をクリックしたときに実行する関数を設定し、数字のラベルへの表示を行っています。また、直接入力ができないようにstate
を"readonly"に設定しています。
spinbox = tkinter.Spinbox( root, from_=-10, to=10, increment=1, command=show_current_value, state="readonly", )
上下矢印を選択すると以下の関数が実行され、get
メソッドで取得したSpinboxの値をラベルに表示させています。
def show_current_value(): label["text"] = "current value is " + spinbox.get()
【スポンサーリンク】
Spinboxに文字列を設定する場合
Spinboxは数字だけでなく、複数の文字列を設定して上下矢印で選択することも可能です。また、Entryの役割も兼ねており、文字列を直接入力することもできます。 次の例では、SpinboxにEasy, Normal, Hardの3種類の文字列を上下矢印で選択できることに加え、文字列の直接入力も受け付けています。上下矢印選択時または直接入力後にEnterキーを押すと、Spinboxの値が取得されてラベルに表示されます。
実行すると先ほどと同様にLabelとSpinboxが表示されますが、Spinboxの上下矢印で選択できる値は初期設定したEasy, Normal, Hardの三種類です。上下矢印で選択した値はラベルにも反映されます。
また、Return
イベントとLabelに現在値を表示させる関数を紐づけているため、値を直接入力した後にEnterキーを押すとその値がラベルに表示されます。
文字列の初期設定をするために、Spinboxのvalues
パラメータに設定する文字列のリストを渡しています。また、今回は直接入力を受け付けるためにstate
の"readonly"設定は行っていません。
spinbox = tkinter.Spinbox( root, values=["Easy", "Normal", "Hard"], command=show_current_value, width=15, )
そして、bind
メソッドでEnterキーと値取得の関数を紐づけています。
spinbox.bind("<Return>", when_entry_key_pressed)
【スポンサーリンク】
オプション・メソッド
主なオプション・メソッド | 動作 |
---|---|
command | 上下矢印選択時に実行する関数を設定 |
state | 読み取り専用:"readonly", 無効:"disabled", 通常:"normal" |
background(bg) | 背景色(green, black, yellow, cyan, magenta, red, blue, white等) |
borderwidth(bd) | 境界幅 |
relief | 縁の3D表示設定(flat, raised, sunken, groove, ridge) |
foreground(fg) | 文字の色の設定(green, black, yellow, cyan, magenta, red, blue, white等) |
font | フォントの設定(Times, Helvetica等) |
.get | 現在の値を取得 |
【スポンサーリンク】