Tkinter Scale

Tkinter Scale とは?

何らかのパラメータの設定等、ツマミを左右(もしくは上下)に移動する UI は直感的にわかりやすいものです。

下のスクリーンショットのようなコントロールは tkinter では スケール (ttk.Scale) といいます。他のプラットフォームなどでは、スライダーコントロールなどの名称であることも多いです。

Tkinter scale windows

Tkinter scale Ubuntu

Tkinter scale macOS

上のスクリーンショットは上から、 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()

このプログラムでスケールのつまみを動かすと、その都度変更された値をコンソールに出力します。

Tkinter Scale value change

ここでは DoubleVar オブジェクトを ttk.Scale ウィジェットの variable オプションに設定します。

DoubleVar オブジェクトでは値の変更時のコールバックを、command オプションで設定できますので、 そのコールバックで値を出力しています。

ttk.Scale の値のレンジは from オプションと to オプションで指定します。 ただし、Python では from は予約語なのでアンダースコアをつけて、from_ として使います。

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

© 2024 Python 入門