今回のTkinterチュートリアルでは、もうひとつのウィジェットであるTkinter Scaleウィジェットを取り上げます。
このウィジェットは、アプリケーションに何らかのスケールを表示したい場合に便利なウィジェットです。
ここでは、簡単な例を使って、このウィジェットの使い方を説明します。
それでは、始めましょう。
Tkinter の基本的なスケールウィジェットのオプション
このウィジェットは、ユーザが一定の範囲内で数値を入力する場合に使用します。
ユーザは、スケールを移動して、入力に適した値を選択することができます。
これを使うには、基本的なオプションは次のような形式になっています。
scale_widget = tk.Scale(master, from_, to, orient)
|
ここで、master は Tkinter のマスターオブジェクトで、Tkinter の GUI アプリケーションを動作させるために必要なものです。
キーワード引数 from_ と to は、スライダーの値の範囲を指定します。
最後に、オリエンテーション orient は “horizontal” または “vertical” のいずれかになります。
もう一つ、オプションの引数として resolution があり、これは値の数値解像度を指定します。
例えば、デフォルトの解像度は 1 で、これはすべての値が最も近い整数に丸められることを保証します。
このパラメータは、必要に応じて調整することができます。
Tkinter のスケールウィジェットの現在の値を使用するには、単に scale_widget.get() を呼び出すだけです。
また、Tkinter のスケールウィジェットを設定するには、 scale_widget.set(value) を呼び出すことができます。
では、この意味を説明するために例を見てみましょう。
Tkinter Scale Widget を使う – アプリケーションのスケールを作成する
0から100までの整数値で構成されるダミーアプリケーションの水平スケールを作ってみましょう。
これは、数値の分解能が1であることを意味します。
import tkinter as tk
from tkinter import messagebox
# Create the master objectmaster = tk.Tk()
# Create a Scale Widgetscale_widget = tk.Scale(master, orient="horizontal", resolution=1,
from_=0, to=100)
# And a label for itlabel_1 = tk.Label(master, text="Scale")
# Use the grid geometry manager to put the widgets in the respective positionlabel_1.grid(row=0, column=0)
scale_widget.grid(row=0, column=1)
# The application mainlooptk.mainloop() |
結果は以下の通りです。
button = tk.Button(master, text="Click", command=buttonCallback)
button.grid(row=1, column=1)
|
さて、どうでしょう?これでTkinterのスケールウィジェットは0から100までの値を表示できるようになりました。
次に、このアプリケーションにButtonウィジェットを追加してみましょう。
スケール値を設定した後にボタンをクリックすると、関数が呼び出されてメッセージボックスアラートが出力され、選択した値が表示されます。
では、Button ウィジェットをプログラムに追加してみましょう。
def buttonCallback():
global scale_widget
messagebox.showinfo("Message", "You have chosen value {}".format(scale_widget.get()))
|
ここで、command 引数は、このボタンがクリックされたときに呼び出される関数を指定します。
ここでは、このイベントを処理する buttonCallback という名前の関数を呼び出します。
master.geometry("300x300")
|
グローバルスコープで scale_widget を使っているので、 scale_widget.get() を使って値を取得することができます。
この値はメッセージボックスに表示されます。
また、master.geometry() を使って、デフォルトのフレームサイズを標準の “200×200” から “300×300” に拡大することもできます。
import tkinter as tk
from tkinter import messagebox
# Create the master objectmaster = tk.Tk()
master.geometry("300x300")
# Create a Scale Widgetscale_widget = tk.Scale(master, orient="horizontal", resolution=1,
from_=0, to=100)
# And a label for itlabel_1 = tk.Label(master, text="Scale")
# Use the grid geometry manager to put the widgets in the respective positionlabel_1.grid(row=0, column=0)
scale_widget.grid(row=0, column=1)
def buttonCallback():
global scale_widget
messagebox.showinfo("Message", "You have chosen value {}".format(scale_widget.get()))
button = tk.Button(master, text="Click", command=buttonCallback)
button.grid(row=1, column=1)
# The application mainlooptk.mainloop() |
今すぐ完全なコードを投稿します。

さて、出力結果を見てみましょう。

確かに、スケール値を設定した後、Buttonをクリックすると、正しい数値が表示されていますね。
この記事もチェック:PythonのTkinterでボタンの状態を取得、有効・無効の切り替えを実装する
まとめ
この記事では、TkinterのScaleウィジェットの使用について見てきました。
次回の記事では、さらにいくつかのウィジェットを取り上げます。