【Python/tkinter】ウィジェットの配置(place)

ウィジェットを配置するには、pack,grid,placeの3つのメソッドがありますが、ここではplaceについて説明します。

placeではウィジェットの位置を座標を指定して配置します。

初期状態では下記のように親(配置先)の左上を原点として、ウィジェットの左上の座標(初期状態の場合、anchorにより変更可)を指定します。

以下に簡単なサンプルを示します。

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.title("ウィジェットの配置(place)")     # ウィンドウタイトル
        self.master.geometry("300x200")       # ウィンドウサイズ(幅x高さ)

        #--------------------------------------------------------
        # ボタンの作成
        button = tk.Button(self.master, text = "ボタン")
        # 座標を指定して配置
        button.place(x = 100, y = 50)
        #--------------------------------------------------------

if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master = root)
    app.mainloop()

(実行画面)

構文

ウィジェット.place(オプション1 = 設定値, オプション2 = 設定値,・・・)

オプション

オプション名 説明
x 配置するX座標を指定します。
y 配置するY座標を指定します。
relx 配置先の座標を配置先の幅に対して相対的な位置を0.0~1.0の値で指定します。
0.0:左端、1.0:右端
rely 配置先の座標を配置先の高さに対して相対的な位置を0.0~1.0の値で指定します。
0.0:上端、1.0:下端
anchor ウィジェットを配置する座標の基準位置を指定します。
【設定値】tk.N, tk.NE, tk.E, tk.SE, tk.S, tk.SW, tk.W, tk.NW, tk.CENTER
【初期値】tk.NW
width ウィジェットの幅を画素数で指定します。
height ウィジェットの高さを画素数で指定します。
relwidth ウィジェットの幅を配置先の幅に対して相対的な値(0.0~1.0)で指定します。
relheight ウィジェットの高さを配置先の高さに対して相対的な値(0.0~1.0)で指定します。

anchor

anchorの基準位置はウィジェットに対して以下のようになります。

サンプル

各種オプション設定を使ったサンプルを示します。

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master = None):
        super().__init__(master)

        self.master.title("ウィジェットの配置(place)")     # ウィンドウタイトル
        self.master.geometry("300x400")       # ウィンドウサイズ(幅x高さ)

        #--------------------------------------------------------
        # ボタンの作成
        button1 = tk.Button(self.master, text = "ボタン1")
        button1.place(x = 30, y = 20)

        button2 = tk.Button(self.master, text = "ボタン2")
        button2.place(x = 80, y = 70, anchor = tk.CENTER) # 指定座標の基準位置変更

        button3 = tk.Button(self.master, text = "ボタン3")
        button3.place(x = 30, y = 90, width = 100, height = 40) # ウィジェットのサイズ指定

        button4 = tk.Button(self.master, text = "ボタン4")
        button4.place(relx = 0.5, rely = 0.4, anchor = tk.CENTER) # 相対座標指定

        button5 = tk.Button(self.master, text = "ボタン5")
        button5.place(relx = 0.5, relwidth = 0.8, y = 200, anchor = tk.CENTER) # ウィジェットのサイズを相対的に指定
        #--------------------------------------------------------
if __name__ == "__main__":
    root = tk.Tk()
    app = Application(master = root)
    app.mainloop()

(実行画面)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください