Python

【Python/Tkinter】tk.Scaleの使い方/スケールを表示させる方法

本記事では、PythonのGUIアプリケーションの一つであるtkinterでGUIを作成する際のスケールウィジェットの使い方について詳しく解説していきます!

スケールウィジェットは、下図のようにスライドバーを操作することで任意の値を指定することができるウィジェットです。

特に本記事では以下のことを紹介しています。

tk.Scaleメソッド

Tkinterで下記のようなスケールウィジェットを配置する場合には、tk.Scale()メソッドを使用します。

scale1
scale = tk.Scale(root, options...)

tk.Scaleで値を取得する方法

スケールウィジェットは、スライドバーを操作することによって任意の値を指定することができます。

このとき指定した値を取得する場合には、.get()メソッドを指定する必要があります。

すらいむ管理人

では実際に、サンプルコードを交えながらtk.Scale()メソッド及び.get()メソッドの使い方を説明していきます!

サンプルコード

tk.Scale()メソッドを使用してスケールウィジェットを作成するサンプルコードを紹介します。今回は0~255の値を選択可能なスケールウィジェットを作成します。

なお今回示すサンプルコードは、スライドバーを動かすと“now_value”関数(自作した関数)が実行されてコンソール上にスケールウィジェットの現在値を表示させるようになっています。

now_value関数では、.get()メソッドを用いてスケールの現在値を取得しています。

スケールウィジェットで選択できる値の型によってサンプルコードを使い分けられるようにしています!

整数型(Int)で値を取得したい場合

整数型で値を取得したい場合のサンプルコードは下記のようになります。

スケール値の変数を“tk.IntVar()”で指定しています。

import tkinter as tk

def now_value(val):
    print(val.get())

root = tk.Tk()
root.title('Scale')
root.geometry("250x100")

#スケール値の型を指定
val = tk.IntVar()

# スケールの作成
scale = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    variable=val,
    from_=0,
    to=255,
    length=150,
    command=lambda e: now_value(val)
)
scale.pack()

root.mainloop()

(実行結果)

浮動小数点型(Double)で値を取得したい場合

浮動小数点型で値を取得したい場合のサンプルコードは下記のようになります。

スケール値の変数を“tk.DoubleVar()”とし、resolutionオプションでスケールウィジェット上に表示させる値の桁数も指定しています。

import tkinter as tk

def now_value(val):
    print(val.get())

root = tk.Tk()
root.title('Scale')
root.geometry("250x100")

#スケール値の型を指定
val = tk.DoubleVar()

# スケールの作成
scale = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    variable=val,
    from_=0,
    to=255,
    length=150,
    resolution=0.1,
    command=lambda e: now_value(val)
)
scale.pack()

root.mainloop()

(実行結果)

このように小数で表示させることができました。

ここでresolutionの値を0.01と変更すると、スケールウィジェット上に表示される数値は下記のように表示されます。

scale2

resolutionを0.001として桁数を増やしてみると、スケールウィジェット上に表示される数値は下記のように表示されます。

scale3

すらいむ管理人

resolutionを始めとしてスケールウィジェットで使用できる様々なオプションも続いて紹介していきます!

スポンサーリンク

スポンサーリンク

使用可能なオプション

tk.Scale()メソッドで使用できる様々なオプションを下記項目に分けて紹介していきます!

色を変更するオプション一覧

スケールウィジェットの外観の色を変更するオプションはこのようになっています。

background背景色の指定
foreground文字色の指定
activebackgroundスライドバーがアクティブになった際の色を指定
troughcolorスケールバーの背景を指定
highlightcolorフォーカスされた際の囲い線を指定
highlightbackgroundフォーカスが外れた際の囲い線を指定
highlightthicknessフォーカスされた際の囲い線の太さを指定
すらいむ管理人

今回は、ウィジェットの色をそれぞれ”orange”に変更してみます!

■backgroundオプション

backgroundオプションを指定すると、ウィジェット全体(フォントが表示される部分も含む)の背景色を変更させることができます。

scale4

■foregroundオプション

foregroundオプションを指定するとスケールバーのフォントの色を変更させることができます。foregroundオプションで色を指定した場合は、tickintervalオプションなどでフォントを追加した場合のフォントにも適用されるようです。

scale5

■activebackgroundオプション

activebackgroundオプションを指定すると、スライドバーがマウスONになった際の色を任意に変更させることができます。

マウスON時に色が変わるとスライドバーがアクティブ状態であることが分かりやすいですね!

■troughcolorオプション

troughcolorオプションを指定すると、スケールウィジェットのバーの背景色を変更することができます。

scale6

■highlightcolor / highlightbackgroundオプション

highlightcolorオプションを指定すると、スケールウィジェットにフォーカスが当てられた際の外枠の色を変更することができます。

また、スケールウィジェットからフォーカスが外れた際に外枠の色を指定したい場合にはhighlightbackgroundオプションを指定することで変更できます。

scale7

■highlightthichnessオプション

highlightthicknessオプションを指定すると、
highlightcolor/highlightbackgroundオプションで指定した外枠の太さを指定することができます。

【2023年最新】プログラミング上達の近道とは?スクールに通うメリットやおすすめランキングも徹底解説!プログラミングを上達するための近道を紹介しています。また、2023年度に人気の優良プログラミングスクールをランキング形式で紹介しています!特にプログラミングスクールの選び方を難易度、料金、特徴など様々な観点から紹介しています。自分自身の目的に合ったスクール選びの助けとなれば幸いです。...

外観に関するオプション一覧

スケールウィジェットの外観に関するオプション一覧は以下のようになっています!

labelラベルを付与
font文字のフォント(太さ, サイズなど)を変更
lengthウィジェットの横幅を変更
widthウィジェットの縦幅を変更
borderwidth境界線の太さを変更
reliefウィジェットの外観を変更
sliderreliefスライドバーの外観を変更
orientウィジェットの向きを変更
showvalueウィジェットに目盛りを追加
sliderlengthスライドバーの長さを変更

■labelオプション

labelオプションを指定すると、下図のようにスケールウィジェット上部にラベルを付与することができます。

ここで付け加えたラベルの色を変更したい場合には、foregroundオプションを使用することで変更可能です。

label="(自由テキスト)"

scale8

■fontオプション

fontオプションを指定すると、スケールウィジェット上に作成された文字のフォントを変更することができます。

font=("", 20)

fontオプションの第一引数には、変更したい字体を指定します。たとえば、”MS Gothic”などです。また、第二引数には文字のサイズを指定します。

scale9

実際にフォントを変更してみます。筆者の好きな”Ink free”というフォントに変更してみると下記のように変更できました!

font一覧を詳しく見たい場合には、font一覧の記事を参考にしてみてください。

font=("Ink free", 20)

scale10

■lengthオプション

lengthオプションを指定すると、スケールウィジェットの長手方向の長さを変更することができます。

scale11

length=100

scale12

length=200

■widthオプション

widthオプションを指定すると、スケールウィジェットの短手方向の長さを変更することができます。

width=50

scale13

■borderwidthオプション

borderwidthオプションを指定するとスケールウィジェットの境界線の太さを変更することができます。太くするとウィジェットは協調されたように見えます。

scale14

boederwidth=10

scale15

borderwidth=50

■reliefオプション

reliefオプションを指定すると、ウィジェットを配置した際の見た目を変更することができます。指定できる見た目は下記の6パターンになります!

relief="flat"
relief="groove"
relief="raised"
relief="ridge"
relief="solid"
relief="sunken"

scale16

■sliderreliefオプション

sliderreliefオプションを指定すると、スライドバーの見た目を変更することができます。変更できる見た目は、reliefオプションと同様に下記の6パターンになります。

sliderrelief="flat"
sliderrelief="groove"
sliderrelief="raised"
sliderrelief="ridge"
sliderrelief="solid"
sliderrelief="sunken"

scale17

■orientオプション

orientオプションを指定すると、スケールウィジェットの向きを変更することができます。

orient=tk.HORIZONTAL #水平
orient=tk.VERTICAL #垂直

スケールウィジェットの方向を縦にした場合、ラベルは左側に表示されるようです。

scale18

orient=tk.HORIZONTAL

scale19

orient=tk.VERTICAL

■showvalueオプション

showvalueオプションを指定すると、スライドバーの現在値の表示/非表示を指定することができます。

showvalue=True #値を表示(デフォルト)
showvalue=False #値を非表示

scale20

showvalue=True

scale21

showvalue=False

■sliderlengthオプション

sliderlengthオプションを指定すると、スライドバーの横幅を変更することができます。

scale22

sliderlength=20

scale23

sliderlength=50

【2023年最新】プログラミング上達の近道とは?スクールに通うメリットやおすすめランキングも徹底解説!プログラミングを上達するための近道を紹介しています。また、2023年度に人気の優良プログラミングスクールをランキング形式で紹介しています!特にプログラミングスクールの選び方を難易度、料金、特徴など様々な観点から紹介しています。自分自身の目的に合ったスクール選びの助けとなれば幸いです。...

スポンサーリンク

機能に関するオプション

色に関するオプション外観に関するオプション以外の機能的なオプション一覧は下記のようになっています。

state操作可否を指定
setスライドバーの値を指定
cursorマウスON時のカーソルを指定
takefocusフォーカスの有効/無効を指定
from_スケールの最小値を指定
toスケールの最大値を指定
resolution表示される桁数を指定
variable変数の型を指定
commandクリック時に実行される関数を指定
tickinterval目盛りの追加
digits有効桁数を指定

※”from_”>”to”で値を指定するとスライドバーを右から左に動かすウィジェットになります。(通常は左から右)

■stateオプション

stateオプションは、ウィジェットの状態を指定できます。

アクティブ状態および通常状態ではスライドバーの操作が可能ですが、無効状態にした場合にはスライドバーを操作することができなくなります。

state="active" #アクティブ状態
state="normal" #通常状態(デフォルト)
state="disabled" #無効状態

scale24

state=”active”

scale26

state=”disabled”

scale25

state=”normal”

外観にあまり変化はないみたいです。

■setオプション

setオプションを使用すると、スライドバーの位置を指定した位置に変更できます。

#スケール値を50に指定する場合のサンプルコード
scale=tk.Scale(root, options...)
scale.set(50)

■cursorオプション

cursorオプションを指定するとマウスON時のカーソルのアイコンを変更できます

代表的なアイコンをいくつか紹介していきます!

#代表的なものをいくつか紹介
cursor = "arrow"  #通常
cursor = "dot"      #点
cursor = "target"  #目のアイコン
cursor = "star"     #☆のアイコン
cursor = "hand1"  #手のアイコン
cursor = "hand2"  #手のアイコン

■takefocusオプション

takefocusオプションは、ウィジェットにフォーカスが当てられるようにしたりフォーカスが当てられないようにしたりできます。

takefocus=True #フォーカスを当てられるようにする
takefocus=False #フォーカスが当てられないようにする(デフォルト)

■from_ , toオプション

「from_」でスクロールバーの最小値(x1)を指定し、「to」でスクロールバーの最大値(x2)を指定します。指定の仕方によってスケールバーの初期配置の位置が変わります。

1<x2と指定した場合

scale27

1>x2と指定した場合

scale28

■resolutionオプション

resolutionオプションは、スケールバー上に表示される値をどのように表示させるかを指定することができます。

resolution=1
resolution=0.1
resolution=0.01

scale29

resolution=1

scale31

resolution=0.01

scale30

resolution=0.1

■variableオプション

variableオプションで、スケールウィジェットから取得できる値の型を指定します。取得できる値の型は下記のようなものが挙げられます。

実際の使い方はサンプルコードを参考にしてみてください。

val = tk.DoubleVar() #浮動小数点型を指定
val = tk.IntVar() #整数型を指定
val = tk.StringVar() #文字型を指定

■commandオプション

commandオプションは、ウィジェットがクリックされた際に、何か処理を追加したい場合に使用します。

実際の使い方はサンプルコードを参考にしてみてください。

■tickintervalオプション

tickintervalオプションを指定すると下記のように、スケール上に目盛りを追加することができます。目盛りの幅も任意に変更することができます。

scale32

tickinterval=50

scale33

tickinterval=100

■digitsオプション

digitsオプションは、表示させる桁数を指定することができるオプションです。

scale34

digits=5

scale35

digits=8

以上となります。
最後まで見ていただきありがとうございました!

Python学習に役立つ書籍プログラミングスクールをランキング形式で分かりやすく紹介しています。