Python Code Notes

Information by python engineer

【tkinter】Spinboxの使い方【Python】

Spinbox使用例

Spinboxは上下矢印ボタンが付いた1行のテキストボックスで、主に矢印を用いて事前に設定された範囲でユーザーに値(または文字列)を設定してもらうためのウィジェットです。また、選択するだけでなくボックス内へ直接値を入力することもできます。


【スポンサーリンク】


Spinboxの設定・値取得方法

-10 ~ 10の範囲の整数値を選択できるSpinboxを作成し、その値をラベルに反映させる例を示します。

How to use spinbox_1

実行すると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の値が取得されてラベルに表示されます。

How to use spinbox-2

実行すると先ほどと同様に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 現在の値を取得

[↑ 目次へ]


【スポンサーリンク】