Tkinter Spinbox

ttk.Spinbox とは?

ttk.Spinbox は、Entry ウィジェットとその横に上下を示す小さなボタン (スピンボタン) が付属しているウィジェットです。

Tkinter Spinbox

数字を段階的にインクリメント、デクリメントすることができる他、あらかじめ用意したリストの中のエントリーを上下矢印を使って選択することができます。

ttk.Spinbox のオプション

ttk.Spinbox ウィジェットの標準オプション

ttk.Spinbox ウィジェットでは次の標準オプションが利用できます。

  • cursor
  • state
  • style
  • takefocus
  • validate
  • validatecommand
  • xscrollcommand

Spinbox は Entry ウィジェットとの組み合わせでできています。 validate, validatecommand については 「Tkinter Entry」 をみてください。

ttk.Spinbox の command オプション

ttk.Spinbox の command オプションはスピンボタンが押された時に呼ばれる関数を指定します。

ttk.Spinbox の format オプション

ttk.Spinbox の format オプションは from と to_ の範囲で数字をインクリメントまたはデクリメントするときに、Entry に表示する数字のフォーマットを指定します。 %m.nfの形式でフォーマットします。

ttk.Spinbox の from_ オプション

ttk.Spinbox の from_ オプションは Spinbox が value に保持する最小値を指定します。

ttk.Spinbox の increment オプション

ttk.Spinbox の increment オプションはスピンボタンを押して value 値を増減させるときの一回毎の変化量を指定します。

ttk.Spinbox の to オプション

ttk.Spinbox の to オプションは Spinbox が value に保持する最大値を指定します。

ttk.Spinbox の values オプション

ttk.Spinbox の values オプションはスピンボックスで選択可能にするリストを指定します。

ttk.Spinbox のスタイル

ttk.Spinbox のスタイルクラス名は TSpinbox です。

TSpinbox では次のオプションが指定できます。

  • arrowcolor
  • arrowsize
  • background
  • bordercolor
  • darkcolor
  • fieldbackground
  • foreground
  • lightcolor
  • padding
  • selectbackground
  • selectforeground

ttk.Spinbox のサンプルコード

Tkinter Spinbox で数字をインクリメント・デクリメントする例

次の例ではスピンボタンで、数字を 0.1 ずつインクリメントまたはデクリメントします。

Tkinter Spinbox increment or decrement

from tkinter import *
from tkinter import ttk

root = Tk()
root.title('Spinbox')

# Frame
frame1 = ttk.Frame(root, padding=10)
frame1.grid()

# スピンボックス
val = StringVar()
val.set('2.5')
sp = ttk.Spinbox(
    frame1,
    format='%3.1f',
    state='readonly',
    textvariable=val,
    from_=0,
    to=5,
    increment=0.1,
    command=lambda: print(val.get()))
sp.grid()

root.mainloop()

スピンボックスへの入力値は textvariable オプションと関連付けできます。

textvariable オプションに StringVar グローバル変数を関連付け、Spinbox の command オプションで指定した関数でスピンボタンクリック時の値を表示しています。

Tkinter Spinbox でリストから項目を選ぶ例

Spinbox は事前定義されたリストを values オプションに渡すことで、ユーザーにその中の項目を選択させることができます。

Tkinter Spinbox predefined items

from tkinter import *
from tkinter import ttk

root = Tk()
root.title('Spinbox')

# Frame
frame1 = ttk.Frame(root, padding=10)
frame1.grid()

# スピンボックス
val = StringVar()
val.set('Orange')
fruits = ['Apple', 'Orange', 'Grape']
sp = ttk.Spinbox(
    frame1,
    state='readonly',
    textvariable=val,
    values=fruits,
    command=lambda: print(val.get()))
sp.grid(row=0, column=0)

root.mainloop()

またこの例では state を readonly にすることで、Spinbox の Entry が編集を受け付けないようにしています。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門