tkinterでpackを使ってフォーム上にオブジェクトを配置する | PythonでGUI作成

※本ページはアフィリエイト広告を利用しています

GUIアプリケーションを開発する際、ウィジェットの配置やレイアウトは非常に重要な要素となります。

tkinterにおいて、これらの要素を制御する方法の一つが、packジオメトリマネージャです。

この記事では、packジオメトリマネージャの基本的な使い方や、そのパラメータについて詳しく解説します。

これにより、tkinterを使ったアプリケーション開発の際に、より柔軟かつ効果的なレイアウトを作成できるようになりますので、ぜひマスターしてください。

この記事でわかること
  • packジオメトリマネージャの概要
  • packジオメトリマネージャで使用できるパラメータ
  • packを使ったGUIの実装方法とサンプルコード
目次

tkinterとは

tkinterは、PythonでGUIアプリケーションを作成するための標準ライブラリです。簡潔で直感的なAPIを提供し、初学者でも容易にウィンドウアプリケーションを開発できます。

以下の記事で、tkinterを使った入力フォーム作成を例に詳しく解説していますので、あわせてご覧ください。

tkinterのジオメトリマネージャ packとは

tkinterpackジオメトリマネージャは、ウィジェットを親ウィジェット内に配置するためのツールです。

sideパラメータでウィジェットの位置(上、下、左、右)を指定できます。fillパラメータでウィジェットが親ウィジェットのどの方向に拡張するかを指定でき、xy、またはbothを選択可能です。

expandパラメータでウィジェットが親ウィジェットの残りのスペースを利用して拡張するかをブール値で設定します。

anchorパラメータでウィジェットのアンカーポイントを指定し、padxpadyでウィジェット周りのパディングを設定します。

これらのパラメータを組み合わせることで、様々なレイアウトと配置を柔軟に実現できます。

主要なパラメータとPythonコード

ここからは、packで使用可能なパラメータと、各パラメータのPythonコードでの実装補法について解説します。

side

ウィジェットを親ウィジェットのどの辺に配置するかを指定します。

  • TOP: 上部
  • BOTTOM: 下部
  • LEFT: 左部
  • RIGHT: 右部
import tkinter as tk

root = tk.Tk()

# 上部に配置
label_top = tk.Label(root, text="Top", bg="red")
label_top.pack(side="top")

# 下部に配置
label_bottom = tk.Label(root, text="Bottom", bg="blue")
label_bottom.pack(side="bottom")

# 左部に配置
label_left = tk.Label(root, text="Left", bg="green")
label_left.pack(side="left")

# 右部に配置
label_right = tk.Label(root, text="Right", bg="yellow")
label_right.pack(side="right")

root.mainloop()

fill

ウィジェットが親ウィジェットのどの方向に拡張するかを指定します。

  • NONE: 拡張しない
  • X: 横方向に拡張
  • Y: 縦方向に拡張
  • BOTH: 両方向に拡張
import tkinter as tk

root = tk.Tk()

# 横方向に拡張
label_x = tk.Label(root, text="Fill X", bg="red")
label_x.pack(fill="x")

# 縦方向に拡張
label_y = tk.Label(root, text="Fill Y", bg="blue")
label_y.pack(fill="y")

# 両方向に拡張
label_both = tk.Label(root, text="Fill BOTH", bg="green")
label_both.pack(fill="both")

# 拡張しない
label_none = tk.Label(root, text="Fill NONE", bg="yellow")
label_none.pack(fill="none")

root.mainloop()

expand

ウィジェットが親ウィジェットの残りのスペースを使って拡張するかどうかをブール値で指定します。

  • 0 or False: 拡張しない
  • 1 or True: 拡張する
import tkinter as tk

root = tk.Tk()

# 残りのスペースを使用して拡張
label_expand_true = tk.Label(root, text="Expand True", bg="red")
label_expand_true.pack(expand=True)

# 残りのスペースを使用して拡張しない
label_expand_false = tk.Label(root, text="Expand False", bg="blue")
label_expand_false.pack(expand=False)

root.mainloop()

anchor

ウィジェットが親ウィジェット内のどの位置に配置されるかを指定します。

  • N, NE, E, SE, S, SW, W, NW, or CENTER
import tkinter as tk

root = tk.Tk()

# 親ウィジェットの上部に配置
label_n = tk.Label(root, text="Anchor N", bg="red")
label_n.pack(anchor="n")

# 親ウィジェットの下部に配置
label_s = tk.Label(root, text="Anchor S", bg="blue")
label_s.pack(anchor="s")

# 親ウィジェットの右部に配置
label_e = tk.Label(root, text="Anchor E", bg="green")
label_e.pack(anchor="e")

# 親ウィジェットの左部に配置
label_w = tk.Label(root, text="Anchor W", bg="yellow")
label_w.pack(anchor="w")

root.mainloop()

padx、pady

ウィジェットの周りの水平および垂直のパディングを指定します。

import tkinter as tk

root = tk.Tk()

# 水平方向のパディングを追加
label_padx = tk.Label(root, text="PadX", bg="red")
label_padx.pack(padx=20)

# 垂直方向のパディングを追加
label_pady = tk.Label(root, text="PadY", bg="blue")
label_pady.pack(pady=20)

# 水平方向と垂直方向のパディングを追加
label_padxy = tk.Label(root, text="PadX and PadY", bg="green")
label_padxy.pack(padx=20, pady=20)

root.mainloop()

Tkinterを効率よく学ぶには

TkinterでGUIを表示させるところまではできたけど、次は何を学べばいいのかな?

実際に業務でTkinterを使用するときに必要な知識を学んでおきたいなあ…

そんな時におすすめなのがUdemyのTkinter講座です。

Udemy(ユーデミー) は様々なスキルを動画で学べるオンライン動画学習プラットフォームです。

Webブラウザ、モバイルデバイス、タブレットなどでアクセスでき、オンライン時に動画をスマホなどの端末にダウンロードしておけばオフライン環境でも学習することが可能です。

おすすめのTkinter講座

Udemyで配信されている「0から始めるTkinterの使い方完全マスター講座〜Python×GUIの基礎・応用〜」の講座では、Tkinterの基本的な講座から始まり、具体例を用いたアプリ開発やGUIとデータベースの連携まで、Tkinterを使ったGUI開発の基礎を体系的に動画で学ぶことが可能です。

icon icon
この講座のポイント
  • Tkinterウィジェットの使い方、配置方法などGUI開発の基礎を体系的に学べる
  • 翻訳アプリや音楽再生アプリなどの実例を通して実装方法を学べる
  • データベースとの連携について学べる

ユーザーの評価

本講座は累計約2000名の方が受講されるベストセラー講座となっています。

  • 「Pythonの標準モジュールのtkinterを使ってできることがいくつかわかった。特に翻訳アプリは実生活に非常に役にたっています。」(Mさん)
  • 「実例を見ながらなのでとても分かりやすかった。」(Yさん)
  • 「家計簿アプリでデータベースと連携する部分がとても参考になりました。」(Hさん)

Udemy公式サイトを見てみる!

まとめ

本記事では、tkinterpackジオメトリマネージャを用いたウィジェットの配置とレイアウトについて学びました。

各パラメータ、sidefillexpandanchorpadx、およびpadyの使い方を理解し、それぞれのパラメータがどのように動作するかの具体的な例を見てきました。

これらの知識を活かすことで、自由度の高いインターフェースを構築できるようになりますので、ぜひ実践してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次