【完全独学Python】Tkinterのウィジェットの配置の種類と比較(メリット・デメリット)

デスクトップアプリ

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

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

デスクトップアプリには必須!!Tkinterでウィジェットを配置する方法とそのメリット・デメリットについてご紹介します!

ゆーや
ゆーや

Tkinterの基本的な使い方は以下の記事を見てね!

Tkinterでウィジェット(ボタン、ラベル、エントリーなど)をウィンドウに配置するには、いくつかの配置方法(レイアウトマネージャ)を利用することができます!

代表的な配置方法として、pack、grid、およびplaceがあります!

本記事では、それぞれの配置方法の説明とサンプルコード、そしてそれぞれのメリットデメリットについて紹介します!

ゆーや
ゆーや

理想のGUIアプリを作るためにここはきちんと押さえておこう!

この記事を読むと

  • Tkinterでのウィジェットの配置の種類がわかる!
  • Tkinterでのそれぞれのウィジェットの使い分けができる!
  • Tkinterでの「pack」について基本が理解できる!
  • Tkinterでの「grid」について基本が理解できる!
  • Tkinterでの「place」について基本が理解できる!

ウィジェットの配置の種類

pack レイアウトマネージャー

import tkinter as tk

root = tk.Tk()
root.title("Pack Layout Example")
root.geometry("500x300")

# ウィジェットを作成
label1 = tk.Label(root, text="Label 1", bg="red", fg="white")
label2 = tk.Label(root, text="Label 2", bg="blue", fg="white")
label3 = tk.Label(root, text="Label 3", bg="green", fg="white")

# ウィジェットを配置
label1.pack(side="top", fill="x")
label2.pack(side="left", fill="y")
label3.pack(side="right", fill="y")

root.mainloop()
ゆーや
ゆーや

packウィジェットをウィンドウ内に順番に配置する簡単な方法!ウィジェットを上、下、左、右のいずれかの方向に詰めることができるよ!また、ウィジェットを中央に配置したり、ウィジェットのサイズを調整したりすることも可能です。

ゆーや
ゆーや

packについてより詳しく解説した記事もあるので是非ご覧ください!
オプションなども詳しく解説しています!

※記事執筆中…しばらくお待ちください

grid レイアウトマネージャー

import tkinter as tk

root = tk.Tk()
root.title("Grid Layout-完全独学Python")
root.geometry("250x200")

# ウィジェットを作成
label1 = tk.Label(root, text="Label 1", bg="red", fg="white", width=20)
label2 = tk.Label(root, text="Label 2", bg="blue", fg="white")
label3 = tk.Label(root, text="Label 3", bg="green", fg="white")
entry1 = tk.Entry(root)

# ウィジェットを配置
label1.grid(row=0, column=0, padx=10, pady=10)
label2.grid(row=0, column=1, padx=10, pady=10)
label3.grid(row=1, column=0, columnspan=2, sticky="ew", padx=10, pady=10)
entry1.grid(row=2, column=0, columnspan=2, padx=10, pady=10, sticky="ew")

root.mainloop()
ゆーや
ゆーや

gridウィジェットを行と列の形式で配置する方法
この方法は、フォームやテーブル状のレイアウトを作成するのに非常に便利だよ!
各ウィジェットを特定の行(row)と列(column)に配置していく!

ゆーや
ゆーや

gridについてより詳しく解説した記事もあるので是非ご覧ください!
オプションなども詳しく解説しています!

※記事執筆中…しばらくお待ちください

place レイアウトマネージャ

import tkinter as tk

root = tk.Tk()
root.title("Place Layout-完全独学Python")
root.geometry("300x200")

# ウィジェットを作成
label1 = tk.Label(root, text="Label 1", bg="red", fg="white")
label2 = tk.Label(root, text="Label 2", bg="blue", fg="white")
label3 = tk.Label(root, text="Label 3", bg="green", fg="white")

# ウィジェットを配置
label1.place(x=20, y=20, width=100, height=50)
label2.place(relx=0.5, rely=0.5, anchor="center")
label3.place(relx=0.5, y=100, anchor="n")

root.mainloop()
ゆーや
ゆーや

placeはウィジェットを絶対位置または相対位置に配置する方法!
ピクセル単位での細かい位置指定が可能で、より精密なレイアウトが必要な場合に使用されることが多いよ!

各配置方法の比較

packのメリット・デメリット

シンプルで使いやすい!
・ウィジェットを順番に配置する場合に適している!

・複雑なレイアウトには不向き。。
・精密な位置指定が難しい。。

gridのメリット・デメリット

表形式のレイアウトに適しており、ウィジェットの整列が容易
フォームの作成に便利!

・packに比べて少し複雑。。
・行と列を考慮する(考え方に慣れている)必要がある。。

placeのメリット・デメリット

精密な位置指定が可能
自由度が高い!

絶対位置指定のため、ウィンドウサイズの変更に対応しにくい。。
・複雑なレイアウトを手動で調整する必要がある。。

ゆーや
ゆーや

このようにそれぞれの配置方法に得意分野や配置の難易度、また自由度の違いなどがある!
自分のつくりたいGUIアプリに合わせて実装を検討しよう!

まとめ

本記事では、ウィジェットの配置の種類(pack, grid, place)基本的な使い方とそのメリット・デメリットについて紹介しました!

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

① ウィジェットの代表的な配置方法には「pack」、「grid」、「place」の3つがある!
② ウィジェットの配置方法の難易度
  pack < grid < place
③ ウィジェットの配置方法の自由度は
  pack < grid < place
④ ウィジェットの配置方法はそれぞれメリット・デメリットがあるのでそれぞれに合った実装をするべき!

ゆーや
ゆーや

まとめの内容を見て、もう頭に浮かべば完璧!

コメント

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