PythonでGUIアプリを作成できるモジュールtkinter(ティーキンター)でWidget(ウィジェット)を配置するplaceについて解説します。
サンプルコードはモジュールのインポートを from tkinter import *
としています。
関数を呼び出す際にパッケージ名の接頭辞 (tk.Frame()
のtk.
)を省略できるのでおすすめです。
place とは
placeはWidgetを座標を指定して配置する場合に使用します。
座標はウィンドウの左上を原点として、横をx、縦をyとしてWidgetの左上の位置を指定します。
以下はボタンを座標(60,50)で配置した例です。
コードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | from tkinter import * root = Tk() root.title('placeの使い方') root.geometry('200x100') # Widget(ボタン)設定 button1 = Button(root, text="ボタン") # Widget(ボタン)をplaceで配置 button1.place(x=60, y=50) root.mainloop() |
placeのオプション一覧
placeで指定可能なオプション一覧です。
オプション | 説明 | 値の形式 |
---|---|---|
x | 配置位置のx軸絶対座標 | ピクセル値 |
y | 配置位置のy軸絶対座標 | ピクセル値 |
relx | 座標を配置先の幅に対する相対的な位置で指定 | 0.0(左端)~1.0(右端) |
rely | 座標を配置先の高さに対する相対的な位置で指定 | 0.0(上端)~1.0(下端) |
anchor | Widgetを配置する座標の基準位置を指定 デフォルトは中央に配置(CENTER) | (基本)CENTER, N, S, W, E (組合せ)NW, NE, SW, SE |
width | Widgetの幅 | ピクセル値 |
height | Widgetの高さ | ピクセル値 |
relwidth | Widgetの幅を、配置先の幅に対する相対値で指定 | 0.0~1.0 |
relheight | Widgetの高さを、配置先の高さに対する相対値で指定 | 0.0~1.0 |
配置位置を指定(x, y)
Widgetを配置する位置を画面の原点(左上)からの座標で指定します。
横方向がx 縦方向がy になります。
packやgridのように他のWidgetに影響されずに自由な位置に配置することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from tkinter import * root = Tk() root.title('placeの使い方') root.geometry('200x100') # Widget(ボタン)設定 button1 = Button(root, text="ボタン1") button2 = Button(root, text="ボタン2") # Widget(ボタン)をplaceで配置 button1.place(x=75, y=20) button2.place(x=90, y=60) root.mainloop() |
相対的な位置で指定(relx, rely)
親Widgetに対して相対的な位置を指定して配置することができます。
値の範囲は0.0~1.0の間になります。
以下の例ではFrameを2つ配置して、それぞれのFrame内で相対位置にボタンを配置しています。
分かりやすいようにFrameの外側を枠線で表しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from tkinter import * root = Tk() root.title('placeの使い方') root.geometry('200x100') # Frame設定 frame1 = Frame(root,width=100, height=100, borderwidth=1, relief='solid') frame2 = Frame(root,width=100, height=100, borderwidth=1, relief='solid') frame1.pack(side=LEFT) frame2.pack(side=LEFT) # Widget(ボタン)設定 button1 = Button(frame1, text="ボタン1") button2 = Button(frame2, text="ボタン2") # Widget(ボタン)をplaceで配置 button1.place(relx=0.4, rely=0.4) button2.place(relx=0.4, rely=0.4) root.mainloop() |
基準位置を指定(anchor)
座標の基準位置を指定することができます。
位置は上下左右=北南西東として頭文字の記号の組み合わせで指定します。
値は、上=N
, 下=S
, 右=E
, 左=W
となり、位置関係は下図のようになります。
デフォルトでは左上(NW)になります。
1 2 3 4 | button1.place(x=40, y=40) button2.place(x=200, y=40, anchor=W) button3.place(x=40, y=100, anchor=N) button4.place(x=200, y=100, anchor=NE) |
幅・高さ(width, height)
Widgetの幅と高さをピクセル値で指定します。
1 2 | button1.place(x=40, y=40) button2.place(x=40, y=100, width=100, height=50) |
相対的な幅、高さを指定(relwidth, relheight)
Widgetの幅と高さを、親Widgetに対して相対的な値で指定します。
値の範囲は0.0~1.0の間になります。
1 2 | button1.place(x=40, y=40) button2.place(x=40, y=100, relwidth=0.6, relheight=0.2) |
以上でtkinterのplaceの使い方の解説は終了です。
以下の記事も参考にしてみて下さい。
・関連記事:PythonでGUIアプリを作成する(tkinter)
・関連記事:【Python/tkinter】Frameの使い方
・関連記事:【Python/tkinter】Widgetの配置(grid)
・関連記事:【Python/tkinter】Widgetの配置(pack)