【完全独学Python】TkinterでPanedwindowはこれだけ覚えて!

デスクトップアプリ

こんにちは!ゆーや(@yuyamanm118712)です。

こちらのページでは完全独学でWebプログラマとなった私が

デスクトップアプリには必須!!TkinterでPanedwindowウィジェットについてご紹介します!

Panedwindowウィジェットは、ウィンドウを拡大・縮小可能な枠で分離できるウィジェットです!

最後までじっくりと読んで、一緒に学習にしていきましょう。

なお、ご指摘・ご質問はTwitter(@yuyamanm118712)のDMまでよろしくお願いします。

この記事を読むと

  • TkinterでPanedwindowの基本的な使い方について理解できる!
  • TkinterでPanedwindowのオプションについて理解できる!

Panedwindowとは

PanedWindowは、複数の子ウィジェットを持つことができ、ユーザーがそのサイズを変更できる便利なコンテナウィジェットです!

ゆーや
ゆーや

Frameも同じようなウィジェットだけど、
PanedWindowサイズが変更できるのがポイントだね!

Frameについては以下の記事を見てね!

Panedwindowの基本

Panedwindowの作成とサンプルコード

import tkinter as tk

# メインウィンドウを作成
root = tk.Tk()
root.title("tkinter Panedwindow - 完全独学Python")
root.geometry("500x300")

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, width="500", height="300")
pane1.pack()

# Entryウィジェットを作成し、pane1に追加
label = tk.Label(pane1, text="左側")
pane1.add(label)

# 垂直のPanedWindowを作成し、pane1に追加
pane2 = tk.PanedWindow(pane1, orient=tk.VERTICAL)
pane1.add(pane2)

# Scaleウィジェットを作成し、pane2に追加
top = tk.Entry(pane2)
pane2.add(top)

# Buttonウィジェットを作成し、pane2に追加
bottom = tk.Button(pane2, text="OK")
pane2.add(bottom)

# メインループを開始
root.mainloop()
ゆーや
ゆーや

例ではPanedwindowを2つ重ねているよ!

枠の端を掴んでサイズをいじってみよう!
ここから詳しく説明していくよ!

Panedwindowのオプション

枠のサイズ(width,height)

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, width="500", height="300")
ゆーや
ゆーや

widthで横幅、height で高さを設定できるよ!

枠の背景色(bg)

import tkinter as tk

# メインウィンドウを作成
root = tk.Tk()
root.title("tkinter Panedwindow - 完全独学Python")
root.geometry("500x300")

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, bg="lightblue", sashwidth="30",width="500", height="300")
pane1.pack()

# Entryウィジェットを作成し、pane1に追加
label = tk.Label(pane1, text="左側")
pane1.add(label)

# 垂直のPanedWindowを作成し、pane1に追加
pane2 = tk.PanedWindow(pane1, orient=tk.VERTICAL, bg="#432790")
pane1.add(pane2)

# Entryウィジェットを作成し、pane2に追加
top = tk.Entry(pane2)
pane2.add(top)

# Buttonウィジェットを作成し、pane2に追加
bottom = tk.Button(pane2, text="OK")
pane2.add(bottom)

# メインループを開始
root.mainloop()
ゆーや
ゆーや

各Panedwindowの背景に色がついているね!
lightblueのような名前やカラーコードでの指定が可能!

sashwidthpanedwindow同士の隙間の幅を設定できるよ!

枠線の種類(relief)

import tkinter as tk

# メインウィンドウを作成
root = tk.Tk()
root.title("tkinter Panedwindow - 完全独学Python")
root.geometry("500x300")

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, relief=tk.RAISED,width="500", height="300")
pane1.pack()

# Entryウィジェットを作成し、pane1に追加
label = tk.Label(pane1, text="左側")
pane1.add(label)

# 垂直のPanedWindowを作成し、pane1に追加
pane2 = tk.PanedWindow(pane1, orient=tk.VERTICAL, relief=tk.SUNKEN, bg="#432790")
pane1.add(pane2)

# Entryウィジェットを作成し、pane2に追加
top = tk.Entry(pane2)
pane2.add(top)

# Buttonウィジェットを作成し、pane2に追加
bottom = tk.Button(pane2, text="OK")
pane2.add(bottom)

# メインループを開始
root.mainloop()
ゆーや
ゆーや

reliefを設定すると、枠が浮き出ているね!
種類は「tk.FLAT、tk.SUNKEN、tk.RAISED、tk.GROOVE、tk.RIDGE」などがあるので試してみよう!

枠線の太さ(bd)

import tkinter as tk

# メインウィンドウを作成
root = tk.Tk()
root.title("tkinter Panedwindow - 完全独学Python")
root.geometry("500x300")

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, relief=tk.RAISED,bd=10,width="500", height="300")
pane1.pack()

# Entryウィジェットを作成し、pane1に追加
label = tk.Label(pane1, text="左側")
pane1.add(label)

# 垂直のPanedWindowを作成し、pane1に追加
pane2 = tk.PanedWindow(pane1, orient=tk.VERTICAL, bd=5, relief=tk.SUNKEN, bg="#432790")
pane1.add(pane2)

# Entryウィジェットを作成し、pane2に追加
top = tk.Entry(pane2)
pane2.add(top)

# Buttonウィジェットを作成し、pane2に追加
bottom = tk.Button(pane2, text="OK")
pane2.add(bottom)

# メインループを開始
root.mainloop()
ゆーや
ゆーや

枠線が太くなっているね!
理想のUIに向けて調整しよう!

PanedWindowの方向(orient)

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL,width="500", height="300")

# 垂直のPanedWindowを作成し、pane1に追加
pane2 = tk.PanedWindow(pane1, orient=tk.VERTICAL)
ゆーや
ゆーや

orientは「tk.HORIZONTAL」と「tk.VERTICAL」の2つが選べて、
HORIZONTALにすると水平(横)にサイズ変更可能でかつ横にウィジェットが配置されていく
VERTICALにすると垂直(縦)にサイズ変更可能でかつ縦にウィジェットが配置されていく
これは覚えておこう!

handleの表示/非表示(showhandle)

import tkinter as tk

# メインウィンドウを作成
root = tk.Tk()
root.title("tkinter Panedwindow - 完全独学Python")
root.geometry("500x300")

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, showhandle=True, relief=tk.RAISED,bd=10,width="500", height="300")
pane1.pack()

# Entryウィジェットを作成し、pane1に追加
label = tk.Label(pane1, text="左側")
pane1.add(label)

# 垂直のPanedWindowを作成し、pane1に追加
pane2 = tk.PanedWindow(pane1, orient=tk.VERTICAL, bd=5, relief=tk.SUNKEN, bg="#432790")
pane1.add(pane2)

# Entryウィジェットを作成し、pane2に追加
top = tk.Entry(pane2)
pane2.add(top)

# Buttonウィジェットを作成し、pane2に追加
bottom = tk.Button(pane2, text="OK")
pane2.add(bottom)

# メインループを開始
root.mainloop()
ゆーや
ゆーや

左側のpanedwindowの右上に小さい■が出てきたね!
これがhandleだよ!

Panedwindowのメソッド

枠内にウィジェットを追加(add)

import tkinter as tk

# メインウィンドウを作成
root = tk.Tk()
root.title("tkinter Panedwindow - 完全独学Python")
root.geometry("500x300")

# 水平のPanedWindowを作成
pane1 = tk.PanedWindow(root, orient=tk.HORIZONTAL, showhandle=True, relief=tk.RAISED,bd=10,width="500", height="300")
pane1.pack()

# Entryウィジェットを作成し、pane1に追加
label = tk.Label(pane1, text="左側")
pane1.add(label)
ゆーや
ゆーや

addメソッドはpanedwindowにウィジェットを追加する時に使うよ!

まとめ

本記事では、Panedwindowを使って、Tkinterで画面に拡大縮小可能な枠を表示する方法を紹介しました!

ポイントは以下の6つです!

① Tkinterで画面に拡大縮小可能な枠を表示するには「Panedwindow」を使う
② 「width,height」オプションは、枠のサイズを指定
③ 「bg」オプションは、枠のサイズを指定
④ 「bd」オプションは、枠線の太さを指定
⑤ 「relief」オプションは、枠線の種類を指定
⑥ 「orient」オプションは、Panedwindowの向きを指定
⑦ 「showhandle」オプションは、handleの表示/非表示を指定
⑧ 「add」メソッドは、枠内にウィジェットを追加

ゆーや
ゆーや

まとめの内容を見て、もう頭に浮かべば完璧!
今日もお疲れ様です!

コメント

タイトルとURLをコピーしました