tkinter.(ttk.)PanedWindow【ペインドウィンドウ ウィジェット】

メモ  (  作成 tk ttk ペインのサイズ tk ttk サッシの変更 tk ttk  )  ウィジェット オプション ペイン オプション 仮想イベント メソッド

メモ

PanedWindowのサンプル画像

仮想イベント

仮想イベント説明
<<EnteredChild>> ttk サッシ部分からペイン部分へのマウスポインタ移動で発生
(内部移動のみ:外部との移動は別途必要〔〕)
引数
eventイベントオブジェクト
マウスポインタ座標の設定なし

オプション

メモ

オプション 一覧

ウィジェット オプションペイン(区画) オプション

ウィジェット オプション
個別オプションtkttk説明
borderwidth (bd)境界線の幅
orientConfig ペイン追加方向
・tk.HORIZONTAL【水平方向:左から右】(デフォルト tk )
・tk.VERTICAL【垂直方向:上から下】(デフォルト ttk )
relief外観
サイズtkttk説明
heightConfig 高さ (ピクセル単位 等)
widthConfig幅 (ピクセル単位 等)
色 関連tkttk説明
background (bg)Style (―)背景色
background (サッシ部)Style[Sash]サッシ部の背景色
bordercolor (サッシ部)Style[Sash]サッシ部の境界線色
lightcolor (サッシ部)Style[Sash]サッシ部左上の明るい
サッシハンドル 関連tkttk説明
gripcountStyle[Sash]グリップ数
handlepadStyle[Sash] サッシハンドルの上端または左端からの位置 (ピクセル単位 等)
handlesizeStyle[Sash]サッシハンドルの正方形の辺の長さ (ピクセル単位 等)
showhandleサッシハンドルの表示有無 (True:表示 / False:非表示)
サッシ(枠) 関連tkttk説明
opaqueresize即時リサイズの有無 (True:即時リサイズ / False:移動予定枠の表示後リサイズ)
proxybackground tk 8.5.19移動予定枠の背景色
proxyborderwidth tk 8.5.19移動予定枠の境界線幅
proxyrelief tk 8.5.19移動予定枠の外観
sashcursorサッシ上のマウスカーソル名
sashpadStyle[Sash]サッシの内部間隔
sashreliefStyle[Sash]サッシの外観
sashthicknessStyle[Sash]サッシの幅
sashwidthサッシの幅
共通tkttk説明
class_クラス名
cursorConfigマウスカーソル名
nameインスタンス名 (省略:自動命名)
先頭に半角大文字は不可・ドットは不可 / フルパスで一意
インスタンス識別
styleConfig スタイル名 (TPanedwindow)
(サッシ部:~.Horizontal.Sash・~.Vertical.Sash に対応)
takefocusConfig[Tab]キー等でのフォーカス移動の有無〔フォーカス関連メソッド
' ' (空文字列):自動設定
False:なし (スキップ)
True:あり (タブストップ)
ペイン(区画) オプションtkttk説明
Method: add( )【ペイン追加】insert( )【ペイン挿入】ttk
aftermethod位置ウィジェット (後挿入)
beforemethod位置ウィジェット (前挿入)
heightmethod高さ
hidemethod非表示状態 (True:非表示 / False:表示)
minsizemethod最小サイズ
padxmethod左右パディング (内部間隔)
padymethod上下パディング (内部間隔)
stickymethod固定位置
stretchmethodサイズ自動調整
'always'どの位置でもサイズ変更可
'first'先頭ペインの場合、サイズ変更可
'last'最終ペインの場合、サイズ変更可
'middle'中間ペインの場合、サイズ変更可
'never'サイズ変更不可
widthmethod
weightmethod余白割当比 (正数)
※:ペインのサイズ比ではない
凡例
●:各種方法で指定可能
○:コンストラクタでのみ指定可能
▲: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ビット

マウスカーソル名の詳細 ( 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凹み

メソッド

コンストラクタ備考
PanedWindow(master=None, cnf={ },  **kw)
ttk.PanedWindow(master=None, **kw)
ttk.Panedwindow (master=None, **kw)
コンストラクタ
master親 (tkinter.Tk【トップレベルウィンドウ】・コンテナウィジェット)
cnf (辞書型引数) ウィジェット オプション
kw (キーワード引数)ウィジェット オプション (複数可)
固有メソッド備考
add(child, **kw) ペイン追加
child追加ウィジェット (既存ウィジェット:移動)
kw (キーワード引数)ペイン オプション
※:after【位置ウィジェット (後挿入)】tkbefore【位置ウィジェット (前挿入)】tk 指定で挿入
forget(child)
※:remove( )【ペイン削除】と同等
ペイン削除
child削除ウィジェット
identify(x, y) 構成部分判定
戻り値座標位置の構成部分
戻り値備考
空文字列子ウィジェット
(n, 'sash') tkサッシ部番号 (n:0~)
(n, 'handle') tkサッシハンドル部番号 (n:0~)
n ttkサッシ番号 (n:0~)
xx座標
yy座標
insert(pos, child, **kw) ttk ペイン挿入
pos挿入位置 ('end':最後 / サッシ番号:0~ / ウィジェット名)
child挿入ウィジェット (既存ウィジェット:移動)
kw (キーワード引数)ペイン オプション
pane(pane, option=None, **kw) ttk ペイン オプションの取得・設定
戻り値 (取得:対象ペインのみ指定)辞書型の全ペイン オプション
戻り値 (個別取得:ペイン オプション名指定)指定ペイン オプションの値
戻り値 (設定:値指定)不定
pane対象ペイン (サッシ番号:0~ / 子ウィジェット / 子ウィジェット パス名)
optionペイン オプション名 (個別取得)
kw (キーワード引数)ペイン オプションと 値 (設定)
panecget(child, option) tk ペイン オプション取得
戻り値ペイン オプション値
child子ウィジェット / 子ウィジェット パス名
optionペイン オプション
paneconfig(tagOrId, cnf=None, **kw) tk
paneconfigure(同上) tk
ペイン オプション取得・設定
戻り値 (全取得:対象ペインのみ指定)辞書型の全ペイン オプション
戻り値 (個別取得:ペイン オプション名指定)指定ペイン オプションの詳細タプル
戻り値 (設定:値指定)不定
tagOrId対象ペイン (子ウィジェット / 子ウィジェット パス名)
cnfペイン オプション名 (個別取得)
kw (キーワード引数)ペイン オプション と 値 (設定)
panes( ) 子ウィジェットパス名取得
戻り値子ウィジェットパス名のタプル (左上からの順)
proxy(*args) tk 内部メソッド (proxy_~ から呼び出し)
戻り値各種戻り値
args各種引数
proxy_coord() tk 移動予定枠の座標取得
戻り値座標のタプル
proxy_forget() tk 移動予定枠の削除
proxy_place(x, y) tk 移動予定枠の配置
xx座標
yy座標
remove(child)
※:forget( )【ペイン削除】と同等
ペイン削除
childペイン対象のウィジェット
sash(*args) 内部メソッド (sash_~ から呼び出し)
戻り値各種戻り値
args各種引数

sash_coord(index) tk
サッシ位置取得
戻り値サッシの左上隅座標
indexサッシ番号 (0~)
sash_mark(index) tk サッシ位置のマーク
indexサッシ番号 (0~)
sash_place(index, x, y) tk サッシ位置設定
indexサッシ番号 (0~)
xx座標 ( orient【ペイン追加方向】HORIZONTAL【水平方向:左から右】のみ有効)
yy座標 ( orient【ペイン追加方向】VERTICAL【垂直方向:上から下】のみ有効)
sashpos(index, newpos=None) ttk サッシ位置取得・設定
戻り値(設定後の)サッシ位置
indexサッシ番号 (0~)
newpos設定サッシ位置 (省略:取得)
※:メインループ処理中のみ有効
共通メソッド (抜粋) 〔詳細はリンク先〕備考
cget( 'option' )
widget['option']
オプション値 取得
下の構文はオプション値の設定も可
config( ~ )
configure( ~ )
オプション 設定・取得
pack( ~ )配置 (パック形式)
grid( ~ )配置 (グリッド形式)
place( ~ )配置 (座標形式)
state( ~ ) ttk状態フラグ 取得・設定
instate( ~ ) ttk状態フラグ チェック

作成 tk

import tkinter as tk
from tkinter import font

# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("300x160")
# ラベル フォントサイズ設定
font_label = font.Font(size=12)
root.option_add("*Label.font", font_label)

# PanedWindow [Main]
pw_main = tk.PanedWindow(root)
pw_main.pack(expand=True, fill=tk.BOTH)
# [Main] - [Pane 0]
label_0 = tk.Label(pw_main, text="Pane 0", bg="LightSalmon")
pw_main.add(label_0, width=100)
# [Main] - [Pane 1]
label_1 = tk.Label(pw_main, text="Pane 1", bg="lightgreen")
pw_main.add(label_1, width=100)
# [Main] - [PanedWindow (Right)]
pw_right = tk.PanedWindow(pw_main, orient=tk.VERTICAL)
pw_main.add(pw_right)
# [Right] - [Pane 2-0]
label_2_0 = tk.Label(pw_main, text="Pane 2-0", bg="LightSalmon")
pw_right.add(label_2_0, height=50)
# [Right] - [Pane 2-2]
label_2_2 = tk.Label(pw_main, text="Pane 2-2", bg="lightblue")
pw_right.add(label_2_2, height=50)
# [Right] - [Pane 2-1]
label_2_1 = tk.Label(pw_main, text="Pane 2-1", bg="lightgreen")
pw_right.add(label_2_1, height=50, before=label_2_2)

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

PanedWindowのサンプル画像


作成 ttk

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

# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("300x150")
# ラベル フォントサイズ設定
font_label = font.Font(size=12)
root.option_add("*TLabel.font", font_label)
# スタイル設定
style = ttk.Style()
style.configure("color0.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="LightSalmon")
style.configure("color1.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightgreen")
style.configure("color2.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightblue")

# PanedWindow [Main]
pw_main = ttk.PanedWindow(root, orient=tk.HORIZONTAL)
pw_main.pack(expand=True, fill=tk.BOTH)
# [Main] - [Pane 0]
label_0 = ttk.Label(pw_main, text="ttk.PanedWindow\nPane 0", style="color0.TLabel")
pw_main.add(label_0, weight=1)
# [Main] - [Pane 1]
label_1 = ttk.Label(pw_main, text="Pane 1", style="color1.TLabel")
pw_main.add(label_1, weight=1)
# [Main] - [PanedWindow (Right)]
pw_right = ttk.PanedWindow(pw_main)
pw_main.add(pw_right, weight=1)
# [Right] - [Pane 2-0]
label_2_0 = ttk.Label(pw_main, text="Pane 2-0", style="color0.TLabel")
pw_right.add(label_2_0, weight=1)
# [Right] - [Pane 2-2]
label_2_2 = ttk.Label(pw_main, text="Pane 2-2", style="color2.TLabel")
pw_right.add(label_2_2, weight=1)
# [Right] - [Pane 2-1]
label_2_1 = ttk.Label(pw_main, text="Pane 2-1", style="color1.TLabel")
pw_right.insert(label_2_2, label_2_1, weight=1)

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

PanedWindowのサンプル画像


ペイン(区画)のサイズ tk

import tkinter as tk
from tkinter import font

# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("600x450")
# ラベル フォントサイズ設定
font_label = font.Font(size=12)
root.option_add("*Label.font", font_label)

# PanedWindow [main]
pw_main = tk.PanedWindow(root, orient=tk.VERTICAL, background="blue")
pw_main.pack(expand=True, fill=tk.BOTH)
# PanedWindow [Title]
pw_title = tk.PanedWindow(pw_main, height=50)
pw_main.add(pw_title, stretch="never", minsize=50)
# PanedWindow [A]
pw_a = tk.PanedWindow(pw_main, height=80)
pw_main.add(pw_a, stretch="always")
# PanedWindow [B]
pw_b = tk.PanedWindow(pw_main, height=80)
pw_main.add(pw_b, stretch="always")
# PanedWindow [C]
pw_c = tk.PanedWindow(pw_main, height=80)
pw_main.add(pw_c, stretch="always")
# PanedWindow [D]
pw_d = tk.PanedWindow(pw_main, height=80)
pw_main.add(pw_d, stretch="always")
# PanedWindow [E]
pw_e = tk.PanedWindow(pw_main, height=80)
pw_main.add(pw_e, stretch="always")

# [Title] - [label]
label_0 = tk.Label(pw_title, text="PanedWindow", bg="lightyellow")
pw_title.add(label_0, width=100, stretch="always")

# [A] - [Pane 0]
label_a_0 = tk.Label(pw_a, text="Pane 0\n\nstretch='always'", bg="LightSalmon")
pw_a.add(label_a_0, width=100, stretch="always")
# [A] - [Pane 1]
label_a_1 = tk.Label(pw_a, text="Pane 1\n\nstretch='always'", bg="lightgreen")
pw_a.add(label_a_1, width=100, stretch="always")
# [A] - [Pane 2]
label_a_2 = tk.Label(pw_a, text="Pane 2\n\nstretch='always'", bg="lightblue")
pw_a.add(label_a_2, width=100, stretch="always")

# [B] - [Pane 0]
label_b_0 = tk.Label(pw_b, text="Pane 0\n\nstretch='first'", bg="LightSalmon")
pw_b.add(label_b_0, width=100, stretch="first")
# [B] - [Pane 1]
label_b_1 = tk.Label(pw_b, text="Pane 1\n\nstretch='first'", bg="lightgreen")
pw_b.add(label_b_1, width=100, stretch="first")
# [B] - [Pane 2]
label_b_2 = tk.Label(pw_b, text="Pane 2\n\nstretch='first'", bg="lightblue")
pw_b.add(label_b_2, width=100, stretch="first")

# [C] - [Pane 0]
label_c_0 = tk.Label(pw_c, text="Pane 0\n\nstretch='last'", bg="LightSalmon")
pw_c.add(label_c_0, width=100, stretch="last")
# [C] - [Pane 1]
label_c_1 = tk.Label(pw_c, text="Pane 1\n\nstretch='last'", bg="lightgreen")
pw_c.add(label_c_1, width=100, stretch="last")
# [C] - [Pane 2]
label_c_2 = tk.Label(pw_c, text="Pane 2\n\nstretch='last'", bg="lightblue")
pw_c.add(label_c_2, width=100, stretch="last")

# [D] - [Pane 0]
label_d_0 = tk.Label(pw_d, text="Pane 0\n\nstretch='middle'", bg="LightSalmon")
pw_d.add(label_d_0, width=100, stretch="middle")
# [D] - [Pane 1]
label_d_1 = tk.Label(pw_d, text="Pane 1\n\nstretch='middle'", bg="lightgreen")
pw_d.add(label_d_1, width=100, stretch="middle")
# [D] - [Pane 2]
label_d_2 = tk.Label(pw_d, text="Pane 2\n\nstretch='middle'", bg="lightblue")
pw_d.add(label_d_2, width=100, stretch="middle")

# [E] - [Pane 0]
label_e_0 = tk.Label(pw_e, text="Pane 0\n\nstretch='never'", bg="LightSalmon")
pw_e.add(label_e_0, width=100, stretch="never")
# [E] - [Pane 1]
label_e_1 = tk.Label(pw_e, text="Pane 1\n\nstretch='never'", bg="lightgreen")
pw_e.add(label_e_1, width=100, stretch="never")
# [E] - [Pane 2]
label_e_2 = tk.Label(pw_e, text="Pane 2\n\nstretch='never'", bg="lightblue")
pw_e.add(label_e_2, width=100, stretch="never")

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

PanedWindowのサンプル画像


ペイン(区画)のサイズ ttk

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


def resize():
    pw_d.sashpos(0, 100)
    pw_d.sashpos(1, 300)


# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("600x450")
# ラベル フォントサイズ設定
font_wiget = font.Font(size=12)
root.option_add("*TLabel.font", font_wiget)
# スタイル設定
style = ttk.Style()
style.configure(
    "example.TPanedwindow",
    background="blue",
)
style.configure("colorT.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightyellow")
style.configure("color0.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="LightSalmon")
style.configure("color1.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightgreen")
style.configure("color2.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightblue")

# PanedWindow [main]
pw_main = ttk.PanedWindow(root, style="example.TPanedwindow")
pw_main.pack(expand=True, fill=tk.BOTH)
# PanedWindow [Title]
pw_title = ttk.PanedWindow(pw_main, height=50, orient=tk.HORIZONTAL)
pw_main.add(pw_title, weight=1)
# PanedWindow [A]
pw_a = ttk.PanedWindow(pw_main, height=50, orient=tk.HORIZONTAL)
pw_main.add(pw_a, weight=2)
# PanedWindow [B]
pw_b = ttk.PanedWindow(pw_main, height=50, orient=tk.HORIZONTAL)
pw_main.add(pw_b, weight=2)
# PanedWindow [C]
pw_c = ttk.PanedWindow(pw_main, height=50, orient=tk.HORIZONTAL)
pw_main.add(pw_c, weight=2)
# PanedWindow [D]
pw_d = ttk.PanedWindow(pw_main, height=50, orient=tk.HORIZONTAL)
pw_main.add(pw_d, weight=2)

# [Title] - [label]
label_0 = ttk.Label(pw_title, text="ttk.PanedWindow", style="colorT.TLabel")
pw_title.add(label_0, weight=1)

# [A] - [Pane 0]
label_a_0 = ttk.Label(pw_a, text="Pane 0\n\nweight=1", style="color0.TLabel")
pw_a.add(label_a_0, weight=1)
# [A] - [Pane 1]
label_a_1 = ttk.Label(pw_a, text="Pane 1\n\nweight=1", style="color1.TLabel")
pw_a.add(label_a_1, weight=1)
# [A] - [Pane 2]
label_a_2 = ttk.Label(pw_a, text="Pane 2\n\nweight=1", style="color2.TLabel")
pw_a.add(label_a_2, weight=1)

# [B] - [Pane 0]
label_b_0 = ttk.Label(pw_b, text="Pane 0\n\nweight=1", style="color0.TLabel")
pw_b.add(label_b_0, weight=1)
# [B] - [Pane 1]
label_b_1 = ttk.Label(pw_b, text="Pane 1\n\nweight=2", style="color1.TLabel")
pw_b.add(label_b_1, weight=2)
# [B] - [Pane 2]
label_b_2 = ttk.Label(pw_b, text="Pane 2\n\nweight=3", style="color2.TLabel")
pw_b.add(label_b_2, weight=3)

# [C] - [Pane 0]
label_c_0 = ttk.Label(pw_c, text="Pane 0\n\nweight=3", style="color0.TLabel")
pw_c.add(label_c_0, weight=3)
# [C] - [Pane 1]
label_c_1 = ttk.Label(pw_c, text="Pane 1\n\nweight=2", style="color1.TLabel")
pw_c.add(label_c_1, weight=2)
# [C] - [Pane 2]
label_c_2 = ttk.Label(pw_c, text="Pane 2\n\nweight=1", style="color2.TLabel")
pw_c.add(label_c_2, weight=1)

# [D] - [Pane 0]
label_d_0 = ttk.Label(pw_d, text="Pane 0\nloooooooooooooooooooong", style="color0.TLabel")
pw_d.add(label_d_0, weight=1)
# [D] - [Pane 1]
label_d_1 = ttk.Label(pw_d, text="Pane 1", style="color1.TLabel")
pw_d.add(label_d_1, weight=1)
# [D] - [Pane 2]
label_d_2 = ttk.Label(pw_d, text="Pane 2", style="color2.TLabel")
pw_d.add(label_d_2, weight=1)

# [Resize]
style.configure("example.TButton", font=font_wiget, background="blue")
button_resize = ttk.Button(root, text="Button\n(Resize)", command=resize, padding=20, style="example.TButton")
button_resize.pack(fill=tk.BOTH)

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

PanedWindowのサンプル画像

PanedWindowのサンプル画像


サッシ(枠)の変更 tk

import tkinter as tk
from tkinter import font

# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("340x100")
# ラベル フォントサイズ設定
font_label = font.Font(size=12)
root.option_add("*Label.font", font_label)

# PanedWindow [Main]
pw_main = tk.PanedWindow(
    root,
    # ハンドル 関連
    showhandle=True,
    # サッシ(枠) 関連
    opaqueresize=False,
    proxybackground="blue",
    proxyborderwidth=5,
    proxyrelief=tk.SUNKEN,
    sashcursor="cross",
    sashpad=5,
    sashrelief=tk.RAISED,
    sashwidth=10,
)
pw_main.pack(expand=True, fill=tk.BOTH)
# [Main] - [Pane 0]
label_0 = tk.Label(pw_main, text="Pane 0", bg="LightSalmon")
pw_main.add(label_0, width=100)
# [Main] - [Pane 1]
label_1 = tk.Label(pw_main, text="Pane 1", bg="lightgreen")
pw_main.add(label_1, width=100)
# [Main] - [Pane 2]
label_2 = tk.Label(pw_main, text="Pane 2", bg="lightblue")
pw_main.add(label_2, width=100)

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

PanedWindowのサンプル画像


サッシ(枠)の変更 ttk

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

# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("340x100")
# ラベル フォントサイズ設定
font_label = font.Font(size=12)
root.option_add("*TLabel.font", font_label)

# PanedWindow [Main]
style = ttk.Style()
print(style.theme_names())
# 出力例:('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative')
style.theme_use("classic")
style.configure(
    "example.TPanedwindow",
    background="blue",
)
style.configure(
    "example.TPanedwindow.Vertical.Sash",
    background="cyan",
    handlepad=30,
    handlesize=10,
    sashpad=5,
    sashthickness=20,
)
pw_main = ttk.PanedWindow(
    root,
    orient=tk.HORIZONTAL,
    style="example.TPanedwindow",
)
pw_main.pack(expand=True, fill=tk.BOTH)
# スタイル設定
style.configure("color0.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="LightSalmon")
style.configure("color1.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightgreen")
style.configure("color2.TLabel", anchor=tk.CENTER, justify=tk.CENTER, background="lightblue")
# [Main] - [Pane 0]
label_0 = ttk.Label(pw_main, text="ttk.PanedWindow\nPane 0", style="color0.TLabel")
pw_main.add(label_0, weight=1)
# [Main] - [Pane 1]
label_1 = ttk.Label(pw_main, text="Pane 1", style="color1.TLabel")
pw_main.add(label_1, weight=1)
# [Main] - [Pane 2]
label_2 = ttk.Label(pw_main, text="Pane 2", style="color2.TLabel")
pw_main.add(label_2, weight=1)

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

PanedWindowのサンプル画像


仮想イベント

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


# <<EnteredChild>>
def entered_child_event(event):
    change_pane()


# ペイン変更
def change_pane():
    mouse_x = pw_main.winfo_pointerx() - pw_main.winfo_rootx()
    count = len(pw_main.panes())
    index = count - 1
    for i in range(count - 1):
        sash_x = pw_main.sashpos(i)
        if mouse_x < sash_x:
            index = i
            break
    for i in range(len(list_label)):
        if i == index:
            list_label[i]['relief'] = tk.RAISED
        else:
            list_label[i]['relief'] = tk.FLAT


# <Enter>
def enter_event(event):
    if pw_main.identify(event.x, event.y) == "":
        change_pane()


# <Leave>
def leave_event(event):
    for label in list_label:
        label['relief'] = tk.FLAT


# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("470x100")
# ラベル フォントサイズ設定
font_label = font.Font(size=12)
root.option_add("*Label.font", font_label)

# PanedWindow [Main]
style = ttk.Style()
style.configure(
    "example.TPanedwindow",
    background="blue",
)
style.configure(
    "example.TPanedwindow.Vertical.Sash",
    sashthickness=10,
)
pw_main = ttk.PanedWindow(
    root,
    style="example.TPanedwindow",
    orient=tk.HORIZONTAL,
)
pw_main.pack(expand=True, fill=tk.BOTH)
# [Main] - [Pane 0]
label_0 = tk.Label(pw_main, text="ttk.PanedWindow\nPane 0", bg="LightSalmon", bd=10)
pw_main.add(label_0, weight=1)
# [Main] - [Pane 1]
label_1 = tk.Label(pw_main, text="Pane 1", bg="lightgreen", bd=10)
pw_main.add(label_1, weight=3)
# [Main] - [Pane 2]
label_2 = tk.Label(pw_main, text="Pane 2", bg="lightblue", bd=10)
pw_main.add(label_2, weight=3)

# イベント設定
list_label = [label_0, label_1, label_2]
pw_main.bind("<<EnteredChild>>", entered_child_event)
pw_main.bind("<Enter>", enter_event)
pw_main.bind("<Leave>", leave_event)

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

PanedWindowのサンプル画像