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

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

メモ

Scaleのサンプル画像


オプション

メモ

オプション 一覧

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