tkinter.(ttk.)Scale【スケール (スライダーバー) ウィジェット】

メモ  (  作成 レイアウト方向 値の設定・取得 値表示  )  オプション メソッド

メモ

Scaleのサンプル画像


オプション

メモ

オプション 一覧

個別tkttk説明
commandConfig 値の変更でコールバックされる関数
(引数:新しい値の文字列)
orientConfig レイアウト方向
HORIZONTAL【水平方向】 (デフォルト ttk )
VERTICAL【垂直方向】 (デフォルト tk )
stateConfig 状態 (tk 互換用 ttk(stateflags)【状態フラグ】を上書き)
NORMAL:通常状態
DISABLED:無効状態
(stateflags)state( )
詳細
状態フラグ (組合せ:state【状態】の変更なし)
(なし):通常状態
・'active':アクティブ状態
・'disabled':無効状態
値 関連tkttk説明
valueConfig 値 (値用ウィジェット変数 を優先 )
variableConfig 値用ウィジェット変数
from_Config左端または上端の値 (デフォルト:0.0)
toConfig 右端または下端の値 (デフォルト: 100.0 tk / 1.0 ttk )
resolution増減幅 (中間値は移動不可)
bigincrement大きな増減値 ([Ctrl]+[矢印]等での操作)
テキストtkttk説明
digits値の文字列変換の桁数
fontフォント (tkinter.Font)
labelラベル文字列
showvalue現在値の表示有無 (True / False)
tickinterval目盛り表示間隔 (デフォルト:0 非表示)
サイズ・配置tkttk説明
lengthConfigウィジェットの長辺サイズ (ピクセル単位 等)
widthウィジェットの短辺サイズ (ピクセル単位 等)
sliderlengthStyle スライダー部の長辺方向サイズ (ピクセル単位 等)
外観tkttk説明
groovewidthStyle 溝の幅
relief外観
sliderreliefStyleスライダー部の外観
troughreliefStyle 溝の外観
色 関連tkttk説明
background (bg)Style (―)背景色
foreground (fg)前景色
activebackground
Style.map()
[background]
スライダー部のアクティブ状態の背景色
highlightbackground外枠の (入力フォーカスなし)
highlightcolor外枠の (入力フォーカスあり)
highlightthickness外枠の幅 (入力フォーカス用)
darkcolorStyle スライダー部の右下の暗い色
lightcolorStyle スライダー部の左上の明るい色
troughcolorStyleスライダー移動部分の溝の
共通tkttk説明
borderwidth (bd)境界線の幅
class_クラス名
cursorConfigマウスカーソル名
nameインスタンス名 (省略:自動命名)
先頭に半角大文字は不可・ドットは不可 / フルパスで一意
インスタンス識別
repeatdelayオートリピート開始までの時間 (ミリ秒数)
repeatintervalオートリピートの間隔 (ミリ秒数)
styleConfig スタイル名 (Horizontal.TScaleVertical.TScale)
takefocusConfig[Tab]キー等でのフォーカス移動の有無〔フォーカス関連メソッド
' ' (空文字列):自動設定
False:なし (スキップ)
True:あり (タブストップ)
凡例
●:各種方法で指定可能
○:コンストラクタでのみ指定可能
▲:config( ) 等でのみ指定可能
Config:コンストラクタ 及び config( ) 等で指定可能
Style:Style でのみ指定可能
Method:メソッドの引数で指定
Default:デフォルト値
:テーマ依存

動的外観変更

style.map (スタイル名, 対象 = [(状態, 状態の値)])

対象状態オプション備考
background【背景色】active【アクティブ状態】activebackground

色の詳細

説明
'色名'色名:'red'・'green'・'blue'・'gray0'~'gray100'・'system~' 等
下記参照
Tcl8.6/Tk8.6 - Tk Commands - colors
(同名色でも HTML5:カラー定義 と定義に差異あり)
'#RGB'16進 4ビット
'#RRGGBB'16進 8ビット
'#RRRGGGBBB'16進 12ビット
'#RRRRGGGGBBBB'16進 16ビット

マウスカーソル名の詳細 ( cursor )

マウスカーソル名説明
'マウスカーソル名'下記参照 ('arrow'・'wait' 等)
Tcl8.6/Tk8.6 - Tk Commands - cursors (英語)
Tkinter 8.5 reference: a GUI for Python - Cursors (英語)

外観の詳細 ( relief )

外観説明
FLATフラット
GROOVE凹み枠
RAISED隆起 (凸)
RIDGE隆起枠 (凸枠)
SOLID実線
SUNKEN凹み

メソッド

コンストラクタ備考
Scale(master=None, cnf={ },  **kw)
ttk.Scale(master=None, **kw)
コンストラクタ
master親 (tkinter.Tk【トップレベルウィンドウ】・コンテナウィジェット)
cnf (辞書型引数)辞書型のオプション
kw (キーワード引数)オプション (複数可)
固有メソッド備考
coords(value=None) tk
get( )現在値の取得
identify(x, y) tk
set(value)現在値の設定
共通メソッド (抜粋) 〔詳細はリンク先〕備考
cget( 'option' )
widget['option']
オプション値 取得
下の構文はオプション値の設定も可
config( ~ )
configure( ~ )
オプション 設定・取得
pack( ~ )配置 (パック形式)
grid( ~ )配置 (グリッド形式)
place( ~ )配置 (座標形式)
state( ~ ) ttk状態フラグ 取得・設定
instate( ~ ) ttk状態フラグ チェック

作成

import tkinter as tk
import tkinter.ttk as ttk

# トップレベルウィンドウ作成
root = tk.Tk()

# tk.Scale
var_scale = tk.DoubleVar()
var_scale.set(30)
scale = tk.Scale(
    root,
    variable=var_scale,
    orient=tk.HORIZONTAL,
    tickinterval=20,
    length=200,
)
scale.pack(padx=10, pady=10)

# ttk.Scale
var_scale_ttk = tk.DoubleVar()
var_scale_ttk.set(0.3)
scale_ttk = ttk.Scale(
    root,
    variable=var_scale_ttk,
    length=200,
)
scale_ttk.pack(padx=10, pady=10)

# メインループ
root.mainloop()

Scaleのサンプル画像


レイアウト方向

import tkinter as tk
import tkinter.ttk as ttk

# トップレベルウィンドウ作成
root = tk.Tk()

# tk.Scale (HORIZONTAL)
var_scale_h = tk.DoubleVar(value=30)
scale_h = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    variable=var_scale_h,
    tickinterval=20,
    length=200,
    background="cyan",
)
scale_h.grid(row=0, column=0, padx=10, pady=10)

# ttk.Scale (HORIZONTAL)
style = ttk.Style()
style.configure(
    "example.Horizontal.TScale",
    background="cyan",
)
var_scale_h_ttk = tk.DoubleVar(value=30)
scale_h_ttk = ttk.Scale(
    root,
    style="example.Horizontal.TScale",
    orient=tk.HORIZONTAL,
    variable=var_scale_h_ttk,
    to=100,
    length=200,
)
scale_h_ttk.grid(row=1, column=0, padx=10, pady=10)

# tk.Scale (VERTICAL)
var_scale_v = tk.DoubleVar(value=30)
scale_v = tk.Scale(
    root,
    orient=tk.VERTICAL,
    variable=var_scale_v,
    tickinterval=20,
    from_=100,
    to=0,
    background="lightblue",
)
scale_v.grid(row=0, column=1, rowspan=2, padx=10, pady=10)

# ttk.Scale (VERTICAL)
style.configure(
    "example.Vertical.TScale",
    background="lightblue",
)
var_scale_v_ttk = tk.DoubleVar(value=30)
scale_v_ttk = ttk.Scale(
    root,
    style="example.Vertical.TScale",
    orient=tk.VERTICAL,
    variable=var_scale_v_ttk,
    from_=100,
    to=0,
)
scale_v_ttk.grid(row=0, column=2, rowspan=2, padx=10, pady=10)

# メインループ
root.mainloop()

Scaleのサンプル画像


値の設定・取得
値表示

import tkinter as tk
import tkinter.ttk as ttk


def copy():
    scale_a2.set(scale_a1.get())
    var_scale_b2.set(var_scale_b1.get())

    scale_a2_ttk.set(scale_a1_ttk.get())
    var_scale_b2_ttk.set(var_scale_b1_ttk.get())
    scale_c2_ttk['value'] = scale_c1_ttk['value']


def set_label(value):
    label['text'] = str(round(float(value), 2))


# トップレベルウィンドウ作成
root = tk.Tk()

# tk.Scale (A1)
scale_a1 = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    tickinterval=20,
    length=200,
)
scale_a1.set(10)
scale_a1.grid(row=0, column=0, padx=10, pady=5)

# tk.Scale (B1)
var_scale_b1 = tk.DoubleVar(value=20)
scale_b1 = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    variable=var_scale_b1,
    tickinterval=20,
    length=200,
)
scale_b1.grid(row=1, column=0, padx=10, pady=5)

# tk.Scale (A2)
scale_a2 = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    tickinterval=20,
    length=200,
)
scale_a2.grid(row=4, column=0, padx=10, pady=5)

# tk.Scale (B2)
var_scale_b2 = tk.DoubleVar()
scale_b2 = tk.Scale(
    root,
    orient=tk.HORIZONTAL,
    variable=var_scale_b2,
    tickinterval=20,
    length=200,
)
scale_b2.grid(row=5, column=0, padx=10, pady=5)

# Button
button = tk.Button(
    root,
    command=copy,
    text="コピー\n値取得 & 値設定",
)
button.grid(row=3, column=0, columnspan=2, padx=10, pady=5)

# Label
label = ttk.Label(
    root,
    text="label",
    width=5,
    relief=tk.SUNKEN,
)
label.grid(row=0, column=2, padx=10, pady=5)

# ttk.Scale (A1)
scale_a1_ttk = ttk.Scale(
    root,
    command=set_label,
    length=200,
)
scale_a1_ttk.set(0.3)
scale_a1_ttk.grid(row=0, column=1, padx=10, pady=5)

# ttk.Scale (B1)
var_scale_b1_ttk = tk.DoubleVar(value=0.4)
scale_b1_ttk = ttk.Scale(
    root,
    variable=var_scale_b1_ttk,
    length=200,
)
scale_b1_ttk.grid(row=1, column=1, padx=10, pady=5)

# ttk.Scale (C1)
scale_c1_ttk = ttk.Scale(
    root,
    value=0.5,
    length=200,
)
scale_c1_ttk.grid(row=2, column=1, padx=10, pady=20)

# ttk.Scale (A2)
scale_a2_ttk = ttk.Scale(
    root,
    length=200,
)
scale_a2_ttk.grid(row=4, column=1, padx=10, pady=5)

# ttk.Scale (B2)
var_scale_b2_ttk = tk.DoubleVar()
scale_b2_ttk = ttk.Scale(
    root,
    variable=var_scale_b2_ttk,
    length=200,
)
scale_b2_ttk.grid(row=5, column=1, padx=10, pady=5)

# ttk.Scale (C2)
scale_c2_ttk = ttk.Scale(
    root,
    value=0.0,
    length=200,
)
scale_c2_ttk.grid(row=6, column=1, padx=10, pady=20)

# メインループ
copy()
root.mainloop()

Scaleのサンプル画像