Spinboxは、自分で指定した選択肢をウィジェット上に表示させることができ▲▼ボタンで選択肢リストから任意の選択肢を選択することができます!
今回はGUIやWebアプリケーションを作成する際に、非常に使い勝手の良いウィジェットである Spinbox ウィジェットの使い方を紹介していこうと思います!
Spinboxのレイアウトを変更できる様々なオプションについても解説していこうと考えていますので是非参考にしてみてください!
- 転職のためのスキルアップとして効率的に学びたい
- 副業としてプログラミングができるようになりたい
- 独学での勉強に限界を感じている
これらに該当する方はプログラミングスクールがスキルアップの近道です!
是非参考にしてみてください。
未経験でも安心!
学生や30代の方にもおすすめなプログラミングスクールがあります!
Spinboxで数値を選択させる
使用するオプション
今回使用するオプションは以下の通りになっています!
■ formatオプション
format = '%m.nf'
数値の表示形式を%m.nfで指定。
mで整数の桁数、nで小数点以下の桁数を指定します。
‘%2.0f’ の場合は、二桁の整数を指定しています。’%2.1f’ の場合は二桁の整数と小数点以下一桁を指定しています。
■ fromオプション
from_= 0 #下限値
‘0’ を指定した場合には、Spinboxで選択できる値の下限値が ‘0’ となります。
■ incrementオプション
increment = 1 #ボタンクリック時の変化量を指定
‘1’ を指定した場合には、Spinboxの▲▼ボタンをクリックした際に±1.0 増減するようになります。
‘0.1’ 等を指定すると小数点以下でも増減させられます。
■ textvariableオプション
textvariable = 変数
Spinboxに表示させるテキストの書式設定。今回は、ttk.spinbox() メソッド前に値の型と初期値を指定します。
■ toオプション
to = 10 #上限値
from_で指定した値からどの値(上限値)までSpinboxで選択できるようにするかを指定できます。
■ commandオプション
command = 関数名
Spinboxの▲▼ボタンがクリックされたときに呼び出される関数を指定。
その他使用できるオプション
その他使用できる代表的なオプションを紹介していきます!
様々な色のカラーコードを知りたい方はコチラを参考にしてください!
■ cursorオプション
#代表的なものをいくつか紹介
cursor = ”arrow” #通常
cursor = "dot" #点
cursor = "target" #目のアイコン
cursor = "star" #☆のアイコン
cursor = "hand1" #手のアイコン
cursor = "hand2" #手のアイコン
マウスON時のカーソルのアイコンを変更できます。
■ stateオプション
# 書き込み不可にする
state = "readonly"
# ▲▼ボタンも使用不可にする
state = "disabled"
‘state‘ を指定すると、Spinboxをクリックして直接値を書き込むことが不可能になります。
(readonlyであれば▲▼ボタンによる値の変更は可能)
■ backgroundオプション
bg = "orange"
背景色を変更できます!
■ fontオプション
#太字
font=("", 10, "bold")
#下線
font=("", 10, "underline")
#フォントサイズ変更
font=("", 15, "underline")
■ selectオプション
selectbackground = "orange"
seleckforeground = "orange"
背景色を選択する際のデフォルトは青色みたいです!
■ justifyオプション
justify = tk.LEFT
justify = tk.CENTER
justify = tk.RIGHT
■ wrapオプション
#選択肢をループさせる
wrap = True
#選択肢をループさせない
wrap = False
選択値が下限値に達した際に上限値に戻る、あるいは上限値に達した際に下限値に戻る機能を追加するかを指定できます。
■ takefocusオプション
takefocus = False #無効
takefocus = True #有効
Tabキーによるフォーカス移動機能を有効にするか無効にするか指定できるオプションです。
■ borderwidthオプション
borderwidth=10
枠線の幅を指定できます。
■ foregroundオプション
fg = "orange"
■ buttonbackgroundオプション
buttonbackground = "orange"
▲▼ボタンの背景色を変更できます!
■ reliefオプション
relief = tk.FLAT
relief = tk.SUNKEN
relief = tk.RIDGE
relief = tk.GROOVE
relief = tk.RAISED
relief = tk.SOLID
■ disabledオプション
Stateオプションで”disabled“を指定している場合に有効なオプション。
disabledbackground = "orange"
disabledforeground = "orange"
■ readonlyオプション
readonlybackground = "orange"
文字色の変更はできませんでした。。。
選択内容を取得する方法
Spinboxで指定した値を取得すためには、.get() メソッドを使用します。
具体的には、textvariableで指定した変数の値に対して使用することで取得できます。
詳しい使い方は実例を参考にしてください!
textvariable.get()
整数値を選択させる方法
整数値を選択できるSpinboxを作成してみます!
今回は、初期値を 5 として、0~10の値を 1 刻みで変更可能なSpinboxを作成してみます!
import tkinter as tk
def select_val(val):
# spinboxの現在地を取得
now_value = val.get()
print(now_value)
def gen_spinbox(root):
# ラベルを配置
label = tk.Label(root, text='数値を選択してください')
label.pack()
# スピンボックスを作成
val = tk.IntVar()
val.set('5') #初期値を指定
spinbox = tk.Spinbox(
root,
format='%2.0f', #数値の桁数を指定
textvariable=val,
from_=0, #下限値を指定
to=10, #上限値を指定
increment=1, #変化量を指定
command=lambda: select_val(val)) #クリック時に実行される関数を指定
spinbox.pack()
if __name__ == '__main__':
root = tk.Tk()
root.geometry('200x100')
root.title('Spinbox')
gen_spinbox(root)
root.mainloop()
(実行結果)
このように数値を変化させることのできるSpinboxを無事作成できました!!!
小数を選択させる方法
先ほどは整数の値を変化させていましたが、小数点以下の値を変化させる方法を解説していきます。先ほどのgen_spinbox 関数を以下のように書き換えてください。
(書き換えた部分にのみコメント追加↓)
def gen_spinbox(root):
label = tk.Label(root, text='数値を選択してください')
label.pack()
val = tk.StringVar() #StringVarに変更
val.set('5.0') #小数点以下も表示させておく
spinbox = tk.Spinbox(
root,
format='%2.1f', #数値の桁数を指定
textvariable=val,
from_=0,
to=10,
increment=0.1, #変化量を指定
command=lambda: select_val(val))
spinbox.pack()
(実行結果)
ちなみに increment の値を0.5とすると、0.5刻みでSpinboxの値が変化します!
.get() メソッドで値を取得する際に、浮動小数点値を取得したい場合には変数を StringVar() として文字列として指定してあげる必要があるみたいです。
# 小数点を取得したい場合
val = tk.StringVar()
# 整数を取得したい場合
val = tk.IntVar()
Spinboxで任意の文字列を選択させる
使用するオプション
今回初めて使用するオプションを紹介していきます。
既に紹介しているオプションに関してはコチラを参考にしてみてください。
■ valuesオプション
select_list = ['A', 'B', 'C', ...]
values = select_list
valuesオプションには、選択したい任意の選択肢をリストとして渡してあげることでSpinboxに表示させることができます!
今回の実例では国名を選択させる例を挙げているので、textvariableの型を tk.StringVar() としていますが、例えば任意の数値を扱いたい場合であれば tk.IntVar() を用いると良いです。
# スピンボックスを作成
val = tk.IntVar() #任意の数値を選択する場合はIntVar()とする
value_list = ['5', '10', '20'] #選択肢を指定
val.set('5') #初期値を指定
spinbox = tk.Spinbox(
root,
textvariable=val,
values=value_list)
任意の選択肢を選択させる方法
任意の選択肢を選択させる例を挙げてみます。
今回は、国名を選択できるようなSpinboxを作成してみます。
import tkinter as tk
def select_val(val):
# spinboxの現在地を取得
now_value = val.get()
print(now_value)
def gen_spinbox(root):
# ラベルを配置
label = tk.Label(root, text='数値を選択してください')
label.pack()
# スピンボックスを作成
val = tk.StringVar()
countries = ['Japan', 'America', 'Australia'] #選択肢を指定
val.set('Japan') #初期値を指定
spinbox = tk.Spinbox(
root,
textvariable=val,
values=countries,
command=lambda: select_val(val)) #クリック時に実行される関数を指定
spinbox.pack()
if __name__ == '__main__':
root = tk.Tk()
root.geometry('200x100')
root.title('Spinbox')
gen_spinbox(root)
root.mainloop()
(実行結果)
このように任意の選択肢を指定できるSpinboxが作成できました!
以上となります。
最後まで見ていただきありがとうございました!
他にも記事を書いていますので是非参考にしてみてください!