Spinboxとは
これです。
スピンボックスは2つの使い方があります。 ①数値を選ぶ使い方(上段) ②用意した文字列を選択する使い方(下段) ソースです。
import tkinter as tk
from tkinter import ttk
if __name__ == '__main__':
root = tk.Tk()
root.title('Spinbox')
label1 = tk.Label(
root,
text='印刷枚数'
)
label1.grid(row=0, column=0)
# 数値のスピンボックス
valNum = tk.StringVar()
valNum.set('2')
spNum = ttk.Spinbox(
root,
state='readonly',
textvariable=valNum,
from_=0,
to=10,
increment=1,
justify='right',
command=lambda: print(valNum.get()))
spNum.grid(row=0, column=1)
label2 = tk.Label(
root,
text='枚'
)
label2.grid(row=0, column=2)
label3 = tk.Label(
root,
text='メーカー'
)
label3.grid(row=2, column=0)
# 文字列のスピンボックス
makers = ['Toyota', 'Nissan', 'Honda', 'Mitubishi', 'Suzuki', 'Daihatsu', 'Subaru', 'BMW', 'Ford']
valStr = tk.StringVar()
valStr.set('Honda')
spStr = ttk.Spinbox(
root,
state='readonly',
textvariable=valStr,
values=makers,
command=lambda: print(valStr.get()))
spStr.grid(row=2, column=1)
root.mainloop()
文字列のスピンボックスでHondaが起動時に表示されます。しかし、tkinter.Spinboxでは最初のデータToyotaが表示されてしまいます。
tkinter.ttk.Spinboxで期待通りの動作Hondaが選択されます。Spinboxは文字列のスピンボックスでHondaが起動時に表示されます。しかし、
tkinter.Spinboxでは最初のデータToyotaが表示されてしまいます。
tkinter.ttk.Spinboxから構築したほうがいいかもしれません。
数値のスピンボックス
●変更されると厄介なので変更できないように読み取り専用にしています。 state='readonly' ●最小値と最大値
from_=0, to=10, ●ワンクリックで変化する値 increment=1
文字列のスピンボックス
●変更されると厄介なので変更できないように読み取り専用にしています。 state='readonly'
設定で活躍しそうなウィジェットです。
|