tkinter.ttk.Notebook【ノートブック (タブ切換) ウィジェット】

メモ  (  作成 タブの追加 ショートカットキー 仮想イベント オプション メソッド ( オプション設定タブ部の動的外観変更 )

メモ

Notebookのサンプル画像

仮想イベント

仮想イベント説明
<<NotebookTabChanged>> 新しいタブの選択後に発生
(1つ目のタブの追加で選択されても発生)

引数
eventイベントオブジェクト

オプション

メモ〔

オプション 一覧

Notebook オプション
サイズ・配置tkttk説明
heightConfigペイン部の高さ (0以下:最大の高さ)
widthConfigペイン部の幅 (0以下:最大の幅)
padding内部間隔 (間隔のリスト)
(stateflags)state( )
詳細
状態フラグ (組合せ)
(なし):通常状態
・'active':アクティブ状態
・'disabled':無効状態
・'selected':選択状態
tabmarginsStyle タブ部の外部間隔 (間隔のリスト)
タブ-expand【タブ部の拡大サイズ】
tabpositionStyleタブの配置位置
色 関連tkttk説明
backgroundStyle背景色 (テーマにより対象領域相違)
foregroundStyle前景色
bordercolorStyle ペインの境界線の
darkcolorStyle ペイン右下の暗い色
lightcolorStyle ペイン左上の明るい色
共通tkttk説明
class_クラス名
cursorConfigマウスカーソル名
nameインスタンス名 (省略:自動命名)
先頭に半角大文字は不可・ドットは不可 / フルパスで一意
インスタンス識別
styleConfig スタイル名 (TNotebook)
(タブのスタイル名:TNotebook.Tab)
takefocusConfig[Tab]キー等でのフォーカス移動の有無〔フォーカス関連メソッド
' ' (空文字列):自動設定
False:なし (スキップ)
True:あり (タブストップ)
タブ オプション
個別tkttk説明
stateMethod 状態
NORMAL:通常状態
DISABLED:タブ選択不可
HIDDEN:非表示
テキスト・画像tkttk説明
fontStyleフォント (tkinter.Font)
textMethodタブのテキスト文字列
compoundMethod テキストと画像の合成 (テキスト対しての画像位置)
imageMethod画像
サイズ・配置tkttk説明
expandStyle タブ部の拡大サイズ (間隔のリスト)
tabmargins【タブ部の外部間隔】
paddingMethod ペイン部と挿入ウィジェットの間隔 (間隔のリスト)
stickyMethod ペイン部の配置方法 〔grid( )【配置 (グリッド形式)】sticky【固定位置】 参照〕
色 関連tkttk説明
backgroundStyle タブ部の背景色
foregroundStyleタブ部の前景色
(activebackground)Style.map()
[background]
タブ部のアクティブ状態の背景色
(activeforeground)Style.map()
[foreground]
タブ部のアクティブ状態の前景色
(disabledbackground)Style.map()
[background]
タブ部の無効状態の背景色
(disabledforeground)Style.map()
[foreground]
タブ部の無効状態の前景色
(selectedbackground)Style.map()
[background]
タブ部の選択状態の背景色
(selectedforeground)Style.map()
[foreground]
タブ部の選択状態の前景色
bordercolorStyle タブ部の境界線の
共通tkttk説明
underlineMethod 下線の文字位置 (0~)
enable_traversal( )【ショートカットキーの有効化】
凡例
●:各種方法で指定可能
○:コンストラクタでのみ指定可能
▲:config( ) 等でのみ指定可能
Config:コンストラクタ 及び config( ) 等で指定可能
Style:Style でのみ指定可能
Method:メソッドの引数で指定
Default:デフォルト値
:テーマ依存

タブ部の動的外観変更

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

対象状態オプション備考
background
【背景色】
active【アクティブ状態】(activebackground)マウスが上にある
disabled【無効状態】(disabledbackground)
selected【選択状態】(selectedbackground)
foreground
【前景色】
active【アクティブ状態】(activeforeground)マウスが上にある
disabled【無効状態】(disabledforeground)
selected【選択状態】(selectedforeground)

色の詳細

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

タブの配置位置の詳細 ( tabposition )

配置位置説明
'配置位置'東西南北 (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 (英語)

テキストと画像の合成の詳細 ( タブ-compound )

指定値説明
(テキスト対しての画像位置)
'text'テキストのみ表示
'image'画像のみ表示
NONEテキストの代わりに画像表示
BOTTOM画像をテキストの下側に表示
TOP画像をテキストの上側に表示
LEFT画像をテキストの左側に表示
RIGHT画像をテキストの右側に表示
CENTER画像をテキストの上に表示

間隔リストの詳細

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

メソッド

コンストラクタ備考
ttk.Notebook(master=None, **kw) コンストラクタ
master親 (tkinter.Tk【トップレベルウィンドウ】・コンテナウィジェット)
kw (キーワード引数)オプション (複数可)
固有メソッド備考
共通引数 タブ下記でタブ指定
・タブのインデックス (0 ~ タブ数-1)
・ウィジェット名
・'@x,y' 形式のタブ識別
CURRENT:選択中のタブ
add(child, **kw) タブの追加・復元
childウィジェット (Frame【フレーム】等)
kw (キーワード引数)タブ オプション
enable_traversal( ) タブ切換のショートカットキーの有効化
例:
・[Ctrl] + [Tab]:次のタブ
・[Shift] + [Ctrl] + [Tab]:前のタブ
・[Alt] + ショートカットキー:指定したタブ 〔underline【下線の文字位置】
forget(tab_id) タブの削除
tab_idタブ
hide(tab_id) タブの非表示
tab_idタブ
index(tab_id) タブのインデックス取得
戻り値該当タブのインデックス / タブ総数
tab_idタブ / END (タブ総数取得)
insert(pos, child,  **kw) タブの挿入・移動 (存在する場合は移動)
pos挿入位置 (END:末尾 / タブのインデックス / ウィジェット名)
childウィジェット (Frame【フレーム】等)
kw (キーワード引数)タブ オプション
select(tab_id=None) タブ選択 (ウィジェット名取得)
戻り値 (取得:引数省略)選択中のウィジェット名
tab_id選択するタブ
tab(tab_id, option=None, **kw) タブオプションの取得・設定
戻り値 (全取得:オプション未指定)辞書型のタブオプション
戻り値 (個別取得:オプション名のみ指定)オプション値
戻り値 (設定:オプション値指定)無効
tab_idタブ
option取得オプション名
kw (キーワード引数)タブ オプション
tabs( ) 管理ウィジェット名取得
戻り値管理ウィジェット名のリスト (タブのインデックス順)
共通メソッド (抜粋) 〔詳細はリンク先〕備考
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()

# ttk.Notebook
notebook = ttk.Notebook(
    root,
    height=100,
    width=200,
)
notebook.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

# ttk.Frame (1~3)
frames = []
for i in range(1, 4):
    widget = ttk.Frame(
        root,
        relief=tk.RIDGE,
    )
    frames.append(widget)
    notebook.add(widget, text="TAB_" + str(i))

# ttk.Frame (0)
widget = ttk.Frame(
    root,
    relief=tk.RIDGE,
)
frames.insert(0, widget)
notebook.insert(0, widget, text="TAB_0")
notebook.select(0)

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

Notebookのサンプル画像


タブ切換のショートカットキー
仮想イベント

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


def msg_event(event):
    var_msg.set(notebook.select())


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

# ttk.Label
label = ttk.Label(
    root,
    font=font_std,
    text="・[Ctrl] + [Tab]:次のタブ\n" +
         "・[Shift] + [Ctrl] + [Tab]:前のタブ\n" +
         "・[Alt] + [0 ~ 3]",
    relief=tk.SUNKEN,
)
label.pack(padx=5, pady=10, ipady=5, fill=tk.X)

# ttk.Label
var_msg = tk.StringVar(value="label_msg")
label_msg = ttk.Label(
    root,
    font=font_std,
    textvariable=var_msg,
    relief=tk.SUNKEN,
)
label_msg.pack(side=tk.BOTTOM, fill=tk.X)

# ttk.Notebook
notebook = ttk.Notebook(
    root,
    height=100,
    width=200,
)
notebook.enable_traversal()
notebook.bind("<<NotebookTabChanged>>", msg_event)
notebook.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

# ttk.Frame (0~3)
frames = []
for i in range(4):
    widget = ttk.Frame(
        root,
        relief=tk.RIDGE,
        name="frame_" + str(i),
    )
    frames.append(widget)
    notebook.add(
        widget,
        underline=5,
        text="TAB (" + str(i) + ")"
    )

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

Notebookのサンプル画像


オプションの設定
タブ部の動的外観変更

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

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

# テーマ
style = ttk.Style()
print(style.theme_names())
print(style.theme_use())
style.theme_use("clam")
print(style.theme_use())

# Syle (TNotebook)
style.configure(
    "example.TNotebook",
    tabposition=tk.SW,
)
# Syle (TNotebook.Tab)
style.configure(
    "example.TNotebook.Tab",
    font=font_bold,
    background="lightyellow",
    foreground="blue",
)
# Style.map (TNotebook.Tab)
style.map(
    "example.TNotebook.Tab",
    foreground=[
        ('active', 'white'),
        ('disabled', 'gray'),
        ('selected', 'blue'),
    ],
    background=[
        ('active', 'orange'),
        ('disabled', 'black'),
        ('selected', 'lightgreen'),
    ],
)
# ttk.Notebook
notebook = ttk.Notebook(
    root,
    style="example.TNotebook",
)
notebook['height'] = 100
notebook.config(width=300)
notebook.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

# ttk.Frame (0~3)
frames = []
for i in range(4):
    widget = ttk.Frame(
        root,
        relief=tk.RIDGE,
        name="frame_" + str(i),
    )
    frames.append(widget)
    notebook.add(
        widget,
        text="TAB " + str(i)
    )

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

Notebookのサンプル画像