tkinter.(ttk.)LabelFrame【ラベル付きフレーム ウィジェット】

メモ  (  作成 ラベルの設定 子ウィジェットの有効化・無効化  )  オプション メソッド

メモ

LabelFrameのサンプル画像


オプション

メモ

オプション 一覧

LabelFrame オプション
ラベル 関連tkttk説明
labelwidgetConfig ラベル用ウィジェット
( text【テキスト文字列】より優先 )
textConfig テキスト文字列 〔関連オプション
( labelwidget【ラベル用ウィジェット】を優先 )
labelanchorConfigラベルの配置位置
labelmarginsStyleラベルの左右マージン
labeloutsideStyleラベルの枠外配置 (True:枠の外 / False:枠の上)
fontフォント (tkinter.Font)
※:text【テキスト文字列】のフォント (ラベル-font で設定)
(stateflags)state( )
詳細
状態フラグ (組合せ)
(なし):通常状態
・'disabled':無効状態 (子ウィジェットは影響なし)〔子ウィジェットの有効化・無効化
・'readonly':読み込み専用状態
サイズ・配置tkttk説明
heightConfig 高さ (ピクセル単位 等)
デフォルト:内部コンテンツのサイズに自動調整
サイズ固定:grid_propagate(False)  または pack_propagate(False)【サイズ調整の有無】で調整なし
widthConfig 幅 (ピクセル単位 等)
デフォルト:内部コンテンツのサイズに自動調整
サイズ固定:grid_propagate(False)  または pack_propagate(False)【サイズ調整の有無】で調整なし
padding内部間隔のリスト
(左端・上端・右端・下端の順)
padxx方向の内部間隔 (ピクセル単位 等)
padyy方向の内部間隔 (ピクセル単位 等)
外観tkttk説明
borderwidth (bd)● (―)境界線の幅
relief外観
色 関連tkttk説明
background (bg)Style (―)
ラベル部
背景色
空文字列背景・境界線を非表示
※:text【テキスト文字列】の背景色 (ラベル-background で設定)
foreground (fg)前景色
※:text【テキスト文字列】の前景色 (ラベル-foreground で設定)
highlightbackground外枠の (入力フォーカスなし)
highlightcolor外枠の (入力フォーカスあり)
highlightthickness外枠の幅 (入力フォーカス用)
bordercolorStyle 枠の
darkcolorStyle 右下の暗い
lightcolorStyle 左上の明るい
colormapカラーマップ
visualビジュアル情報 〔Tk_GetVisual (英語)
共通tkttk説明
class_クラス名
cursorConfigマウスカーソル名
nameインスタンス名 (省略:自動命名)
先頭に半角大文字は不可・ドットは不可 / フルパスで一意
インスタンス識別
styleConfig スタイル名 (TLabelframe)
(ラベルのスタイル名:TLabelframe.Label)
takefocusConfig[Tab]キー等でのフォーカス移動の有無〔フォーカス関連メソッド
' ' (空文字列):自動設定
False:なし (スキップ)
True:あり (タブストップ)
underlineConfig下線の文字位置 (0~)
(ショートカットキー用:実装は別途必要)
text【テキスト文字列】 オプション
ラベルtkttk説明
ラベル-backgroundStyle背景色
ラベル-fontStyleフォント (tkinter.Font)
ラベル-foregroundStyle前景色
凡例
●:各種方法で指定可能
○:コンストラクタでのみ指定可能
▲:config( ) 等でのみ指定可能
Config:コンストラクタ 及び config( ) 等で指定可能
Style:Style でのみ指定可能
Method:メソッドの引数で指定
Default:デフォルト値
:テーマ依存

色の詳細

説明
'色名'色名:'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ビット

ラベル配置位置の詳細 ( labelanchor )

配置位置説明
'配置位置'東西南北 (news) を使用した各辺を3つに分けた12方向
下記参照
'nw'
NW
'n'
N
'ne'
NE
'wn'
 
'en'
 
'w'
W
'e'
E

'ws'

'es'
'sw'
SW
's'
S
'se'
SE

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

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

内部間隔リストの詳細 ( padding )

指定値説明
[内部間隔 (左), 内部間隔 (上), 内部間隔 (右), 内部間隔 (下)]内部間隔の指定
(左から時計回り)
[内部間隔 (左), 内部間隔 (上・下), 内部間隔 (右)]
[内部間隔 (左・右), 内部間隔 (上・下)]
内部間隔 (上・下・左・右)

外観の詳細 ( relief )

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

メソッド

コンストラクタ備考
LabelFrame(master=None, cnf={ }, **kw)
ttk.LabelFrame(master=None, **kw)
コンストラクタ
master親 (tkinter.Tk【トップレベルウィンドウ】・コンテナウィジェット)
cnf (辞書型引数)辞書型のオプション
kw (キーワード引数)オプション (複数可)
固有メソッド備考
なし
共通メソッド (抜粋) 〔詳細はリンク先〕備考
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.LabelFrame
labelframe = tk.LabelFrame(
    root,
    text="LabelFrame",
    relief=tk.GROOVE,
    background="lightblue",
)
labelframe.pack(side=tk.LEFT, padx=5, pady=5)

# Radio
var_radio = tk.IntVar(value=1)
radio_1 = tk.Radiobutton(
    labelframe,
    text="Radiobutton (1)",
    value=1,
    variable=var_radio,
    background="lightblue",
)
radio_1.pack(padx=10, pady=5)
radio_2 = tk.Radiobutton(
    labelframe,
    text="Radiobutton (2)",
    value=2,
    variable=var_radio,
    background="lightblue",
)
radio_2.pack(padx=10, pady=5)

# ttk.LabelFrame
style = ttk.Style()
style.configure(
    "example.TLabelframe",
    background="lightblue",
)
style.configure(
    "example.TLabelframe.Label",
    background="lightblue",
)
labelframe_ttk = ttk.LabelFrame(
    root,
    style="example.TLabelframe",
    text="ttk.LabelFrame",
    relief=tk.GROOVE,
)
labelframe_ttk.pack(side=tk.LEFT, padx=5, pady=5)

# ttk.Radio
style.configure(
    "example.TRadiobutton",
    background="lightblue",
)
var_radio_ttk = tk.IntVar(value=1)
radio_ttk_1 = ttk.Radiobutton(
    labelframe_ttk,
    style="example.TRadiobutton",
    text="ttk.Radiobutton (1)",
    value=1,
    variable=var_radio_ttk,
)
radio_ttk_1.pack(padx=10, pady=5)
radio_ttk_2 = ttk.Radiobutton(
    labelframe_ttk,
    style="example.TRadiobutton",
    text="ttk.Radiobutton (2)",
    value=2,
    variable=var_radio_ttk,
)
radio_ttk_2.pack(padx=10, pady=5)

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

LabelFrameのサンプル画像


ラベルの設定

import tkinter as tk
import tkinter.ttk as ttk
from tkinter import font

# トップレベルウィンドウ作成
root = tk.Tk()
font_std = font.Font(size=12, weight="bold")

# tk.LabelFrame
labelframe = tk.LabelFrame(
    root,
    text="LabelFrame",
    font=font_std,
    height=50,
    width=150,
    relief=tk.GROOVE,
    background="lightgreen",
    foreground="green",
)
labelframe.grid(row=0, column=0, padx=10, pady=10)

# tk.LabelFrame (labelwidget)
labelframe_2 = tk.LabelFrame(
    root,
    labelanchor=tk.SE,
    height=50,
    width=150,
    relief=tk.GROOVE,
    background="lightgreen",
)
widget = tk.Label(
    labelframe_2,
    text="Label",
    font=font_std,
    background="blue",
    foreground="white",
)
labelframe_2['labelwidget'] = widget
labelframe_2.grid(row=1, column=0, padx=10, pady=10)

# ttk.LabelFrame
style = ttk.Style()
style.configure(
    "example.TLabelframe",
    background="lightgreen",
)
style.configure(
    "example.TLabelframe.Label",
    font=font_std,
    background="green",
    foreground="white",
)
labelframe_ttk = ttk.LabelFrame(
    root,
    style="example.TLabelframe",
    text="ttk.LabelFrame",
    height=50,
    width=150,
    relief=tk.GROOVE,
)
labelframe_ttk.grid(row=0, column=1, padx=10, pady=10)

# ttk.LabelFrame (labelwidget)
labelframe_ttk_2 = ttk.LabelFrame(
    root,
    style="example.TLabelframe",
    labelanchor=tk.SE,
    height=50,
    width=150,
    relief=tk.GROOVE,
)
widget_ttk = ttk.Label(
    labelframe_ttk_2,
    text="ttk.Label",
    font=font_std,
    background="blue",
    foreground="white",
)
labelframe_ttk_2['labelwidget'] = widget_ttk
labelframe_ttk_2.grid(row=1, column=1, padx=10, pady=10)

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

LabelFrameのサンプル画像


子ウィジェットの有効化・無効化

Progressbar【プログレスバー】の変更が判別できる様にテーマ変更

import tkinter as tk
import tkinter.ttk as ttk


def set_state():
    if var_check.get() == tk.ON:
        flag = tk.NORMAL
        stateflags = ['!disabled']
    else:
        flag = tk.DISABLED
        stateflags = ['disabled']
    for child in labelframe.winfo_children():
        keys = child.keys()
        if "state" in keys:
            child.config(state=flag)
        if getattr(child, "state", None) != None:
            child.state(stateflags)


def set_state_ttk():
    if var_check_ttk.get() == tk.ON:
        flag = tk.NORMAL
        stateflags = ['!disabled']
    else:
        flag = tk.DISABLED
        stateflags = ['disabled']
    for child in labelframe_ttk.winfo_children():
        keys = child.keys()
        if "state" in keys:
            child.config(state=flag)
        if getattr(child, "state", None) != None:
            child.state(stateflags)


# トップレベルウィンドウ作成
root = tk.Tk()
style = ttk.Style()
style.theme_use("alt")

# tk.LabelFrame
labelframe = tk.LabelFrame(
    root,
    relief=tk.GROOVE,
)
labelframe.grid(row=0, column=0, padx=10, pady=5)

# Checkbutton
var_check = tk.IntVar(value=tk.ON)
checkbutton = tk.Checkbutton(
    root,
    command=set_state,
    text="有効",
    variable=var_check,
)
labelframe['labelwidget'] = checkbutton
labelframe.pack(side=tk.LEFT, padx=10, pady=10)

# Radio
var_radio = tk.IntVar(value=1)
radio_1 = tk.Radiobutton(
    labelframe,
    text="Radiobutton (1)",
    value=1,
    variable=var_radio,
)
radio_1.pack(padx=10, pady=5)
radio_2 = tk.Radiobutton(
    labelframe,
    text="Radiobutton (2)",
    value=2,
    variable=var_radio,
)
radio_2.pack(padx=10, pady=5)

# Progressbar
progressbar = ttk.Progressbar(
    labelframe,
    value=50,
)        
progressbar.pack(padx=10, pady=5)

# ttk.LabelFrame
labelframe_ttk = ttk.LabelFrame(
    root,
    relief=tk.GROOVE,
)

# ttk.Checkbutton
var_check_ttk = tk.IntVar(value=tk.ON)
checkbutton_ttk = ttk.Checkbutton(
    root,
    command=set_state_ttk,
    text="有効",
    variable=var_check_ttk,
)
labelframe_ttk['labelwidget'] = checkbutton_ttk
labelframe_ttk.pack(side=tk.LEFT, padx=10, pady=10)

# ttk.Radio
var_radio_ttk = tk.IntVar(value=1)
radio_ttk_1 = ttk.Radiobutton(
    labelframe_ttk,
    text="Radiobutton (1)",
    value=1,
    variable=var_radio_ttk,
)
radio_ttk_1.pack(padx=10, pady=5)
radio_ttk_2 = ttk.Radiobutton(
    labelframe_ttk,
    text="Radiobutton (2)",
    value=2,
    variable=var_radio_ttk,
)
radio_ttk_2.pack(padx=10, pady=5)

# Progressbar
progressbar_ttk = ttk.Progressbar(
    labelframe_ttk,
    value=50,
)        
progressbar_ttk.pack(padx=10, pady=5)

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

LabelFrameのサンプル画像   LabelFrameのサンプル画像