【完全独学Python】Tkinterのplace()でGUIレイアウトを簡単に作成!

デスクトップアプリ

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

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

デスクトップアプリには必須!!Tkinterでplaceを使ったウィジェットを配置方法を詳しく紹介します!

ゆーや
ゆーや

ウィジェットの配置方法はいろいろあるから
どの配置方法がいいかについては以下の記事を見てね!

place()メソッドは、Tkinterでウィジェットを配置するためのレイアウトマネージャの一つです!

Tkinterには主に以下の三つのレイアウトマネージャが存在します。

  • pack()
  • grid()
  • place()

これらの中でgridメソッドは、ィジェットをピクセル単位または相対単位で親ウィジェット内に正確に配置するための方法です!

この記事では、初心者向けにTkinterのplaceレイアウトについて説明し、実際のサンプルコードを交えて使い方を詳しく解説します!

本記事を通してしっかり学んでおきましょう!

この記事を読むと

  • Tkinterでの「place」について基本が理解できる!
  • Tkinterでの「place」の様々なオプションについて理解できる!

place()の基本的な使い方

placeの使い方の基本とサンプルコード

import tkinter as tk

root = tk.Tk()
root.title("Place-完全独学Python")
root.geometry("500x300")

# ウィジェットの作成
label1 = tk.Label(root, text="Hello, World!", bg="lightblue")

# ウィジェットの配置
label1.place(x=50, y=50)

root.mainloop()
ゆーや
ゆーや

placeメソッドは、ウィジェットを x(横)y(縦)ピクセルで指定して配置するよ!

左上から詰めていくんだね!

placeのオプション

ウィジェットの幅と高さを指定(width, height)

import tkinter as tk

root = tk.Tk()
root.title("Place-完全独学Python")
root.geometry("500x300")

# ウィジェットの作成
label1 = tk.Label(root, text="Hello, World!", bg="lightblue")

# ウィジェットの配置
label1.place(x=100, y=100, width=200, height=50)

root.mainloop()
ゆーや
ゆーや

先ほどより、ウィジェットが大きくなったのがわかるね!
width横幅height縦幅を調整できる!

親ウィジェットの幅と高さに対する相対的な位置(relx, rely)

import tkinter as tk

root = tk.Tk()
root.title("Place-完全独学Python")
root.geometry("500x300")

# ウィジェットの作成
label1 = tk.Label(root, text="Hello, World!", bg="lightblue")

# ウィジェットの配置
label1.place(relx=0.5, rely=0.5)

root.mainloop()
ゆーや
ゆーや

relxもrelyも0.5なので親ウィジェット(root)の真ん中に来ているね!

ただし、Labelの左上の角が真ん中に来ている事に注意!
ちなみに値は0.0から1.0の範囲です!

親ウィジェットの幅と高さに対する相対的なサイズを指定(relwidth, relheight)

import tkinter as tk

root = tk.Tk()
root.title("Place-完全独学Python")
root.geometry("500x300")

# ウィジェットの作成
label1 = tk.Label(root, text="Hello, World!", bg="lightblue")

# ウィジェットの配置
label1.place(relx=0.5, rely=0.5, relwidth=0.5, relheight=0.5)

root.mainloop()
ゆーや
ゆーや

Labelのサイズが縦も横も親ウィジェットの半分(0.5)になっているね!

ウィンドウのサイズを変える前提のアプリならこちらで配置した方がいいかも!

ウィジェットのどの部分を基準にして位置を指定(anchor)

import tkinter as tk

root = tk.Tk()
root.title("Place-完全独学Python")
root.geometry("500x300")

# ウィジェットの作成
label1 = tk.Label(root, text="Hello, World!", bg="lightblue")

# ウィジェットの配置
label1.place(relx=0.5, rely=0.5, anchor='center')

root.mainloop()
ゆーや
ゆーや

anchorを「center」に設定することで、

ウィジェットの中心が親ウィジェットの中心に配置されるようになったね!

デフォルトは’nw’(北西、つまり左上隅)です。他の値としては、’n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘center’などがあるよ!

応用

複数のオプションを組み合わせる

import tkinter as tk

root = tk.Tk()
root.title("Place-完全独学Python")
root.geometry("500x300")

# ウィジェットの作成(カラフルなボタン)
button1 = tk.Button(root, text="Top Left", bg="lightblue")
button2 = tk.Button(root, text="Top Center", bg="lightgreen")
button3 = tk.Button(root, text="Top Right", bg="lightcoral")
button4 = tk.Button(root, text="Center", bg="lightyellow")
button5 = tk.Button(root, text="Bottom Left", bg="lightpink")
button6 = tk.Button(root, text="Bottom Right", bg="lightgray")

# ウィジェットの配置
button1.place(x=0, y=0, width=100, height=50, anchor='nw')           # 左上
button2.place(relx=0.5, y=0, width=100, height=50, anchor='n')       # 中央上
button3.place(relx=1.0, y=0, width=100, height=50, anchor='ne')      # 右上

button4.place(relx=0.5, rely=0.5, width=100, height=50, anchor='center')  # 中央

button5.place(x=0, rely=1.0, width=100, height=50, anchor='sw')      # 左下
button6.place(relx=1.0, rely=1.0, width=100, height=50, anchor='se') # 右下

# 追加の装飾
root.configure(bg="lightblue")  # 背景色の変更

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

placeを使えば、こんなGUIも簡単に作れる!
ウィジェットの配置はGUIをきれいに見せるためには超~大事!
高度なplaceを使えるようになれば、何でも作れるよ!

まとめ

本記事では、place使い方とそのオプションについて紹介しました!

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

① 「place」はウィジェットをピクセル単位または相対単位で親ウィジェット内に正確に配置方法
② 「width, height」オプションは、ウィジェットの幅と高さを指定
③ 「relx, rely」オプションは、親ウィジェットの幅と高さに対する相対的な位置を指定
④ 「relwidth, relheight」オプションは、親ウィジェットの幅と高さに対する相対的なサイズを指定
⑤ 「anchor」オプションは、ウィジェットのどの部分を基準にして位置を指定

ゆーや
ゆーや

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

コメント

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