Tkinter Scale
Tkinter Scale とは?
何らかのパラメータの設定等、ツマミを左右(もしくは上下)に移動する UI は直感的にわかりやすいものです。
下のスクリーンショットのようなコントロールは tkinter では スケール (ttk.Scale) といいます。他のプラットフォームなどでは、スライダーコントロールなどの名称であることも多いです。
上のスクリーンショットは上から、 Windows、Linux (Ubuntu 16.04LTS)、Mac 上でとったものです。ルックアンドフィールは、テーマによって変更可能です。
Tkinter Scale のオプション
ttk.Scale ウィジェットの標準オプション
ttk.Scale ウィジェットでは次の標準オプションが利用できます。
- cursor
- style
- takefocus
ttk.Scale ウィジェットの command オプション
ttk.Scale ウィジェットの command オプションは、value オプションが変更されたときに呼び出される関数を指定します。
ttk.Scale ウィジェットの from_ オプション
ttk.Scale ウィジェットの from_ オプションは、水平向きの場合は左端、垂直向の場合は上端のときの値になります。
尚、from_ 値は必ずしも value の最小値である必要はありません。to オプションより大きい値を設定することも可能です。
ttk.Scale ウィジェットの length オプション
ttk.Scale ウィジェットの length オプションはスケールの長さを指定します。
ttk.Scale ウィジェットの orient オプション
ttk.Scale ウィジェットの orient オプションはスケールの向きを指定します。有効な値は horizontal と vertical です。(その他同じ意味の省略形もあります)
ttk.Scale ウィジェットの to オプション
ttk.Scale ウィジェットの to オプションは水平向きの場合は右端、垂直向の場合は下端のときの値になります。
尚、from_ 値は必ずしも value の最大値である必要はありません。from_ オプションより小さい値を設定することも可能です。
ttk.Scale ウィジェットの value オプション
ttk.Scale ウィジェットの value オプションはスケールの値を指定します。variable オプションに変数が指定してある場合は、variable オプションに指定された変数の値が使われます。
ttk.Scale ウィジェットの variable オプション
ttk.Scale ウィジェットの variable オプションはスケールの値を保持するグローバル変数を設定します。
Tkinter Scale のスタイル
ttk.Scale のスタイルクラス名は TScale です。
TScale では次のオプションが指定できます。
- background : 背景色の設定
- borderwidth
- darkcolor
- groovewidth
- lightcolor
- sliderwidth
- troughcolor
- troughrelief
Tkinter Scale のサンプルコード
次のコード例ではスケール・ウィジェットを動かすことによって、パラメータが変更される状況を追跡します。
from tkinter import *
from tkinter import ttk
root = Tk()
root.title('Scale')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
# Frame
frame = ttk.Frame(root, padding=10)
frame.grid(sticky=(N, W, S, E))
frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1)
# スケールの作成
val = DoubleVar()
sc = ttk.Scale(
frame,
variable=val,
orient=HORIZONTAL,
length=200,
from_=0,
to=255,
command=lambda e: print('val:%4d' % val.get()))
sc.grid(row=0, column=0, sticky=(N, E, S, W))
# Button
button1 = ttk.Button(
frame,
text='OK',
command=lambda: print('val:%4d' % val.get()))
button1.grid(row=0, column=1, padx=5, sticky=(E))
root.mainloop()
このプログラムでスケールのつまみを動かすと、その都度変更された値をコンソールに出力します。
ここでは DoubleVar オブジェクトを ttk.Scale ウィジェットの variable オプションに設定します。
DoubleVar オブジェクトでは値の変更時のコールバックを、command オプションで設定できますので、 そのコールバックで値を出力しています。
ttk.Scale の値のレンジは from オプションと to オプションで指定します。 ただし、Python では from は予約語なのでアンダースコアをつけて、from_ として使います。