3.12 フレーム表示位置とサイズ(3)(place_configure、place、relx、rely、relwidth、relheight)
フレームの表示位置とサイズは「place_configure」または「place」メソッドの「x」、「y」、「width」、「height」オプションでピクセル単位で設定できました(3.10 フレーム表示位置とサイズ(1) )。この設定を親オブジェクトの描画領域の割合で設定することができます。「place_configure」または「place」メソッドの「relx」、「rely」、「relwidth」、「relheight」オプションを用います。
「relx」と「rely」オプションは表示位置の横および縦方向の座標を親オブジェクトの幅と高さの割合で指定します。値は浮動小数点数またはその文字列で指定します。「0.0」は親オブジェクトの描画領域の左上端に位置し、「1.0」は親オブジェクトの描画領域の右下端に位置します。「x」および「y」オプションで値が指定されている場合、それらの値は加算されます。
「relwidth」と「relheight」オプションはオブジェクトの幅と高さを親オブジェクトの幅と高さの割合で指定します。値は浮動小数点数またはその文字列で指定します。「0.0」は幅または高さが「0」で、「1.0」は親オブジェクト描画領域の幅または高さと同じになります。「width」および「height」オプションで値が指定されている場合、それらの値は加算されます。
次のプログラムは「relx」、「rely」、「relwidth」、「relheight」オプションでフレームの表示位置とサイズを設定しています。フレームの表示位置を横、縦ともに親オブジェクトの「0.1」、幅と高さともに親オブジェクトの「0.8」としています。設定後のピクセルでの値を「print」出力しています。
import tkinter as tk | |
root = tk.Tk() | |
root.wm_geometry('300x200+100+100') | |
frame = tk.Frame(root, bg='red') | |
frame.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.8) | |
frame.update() | |
print('position', frame.winfo_x(), frame.winfo_y()) | |
print('size', frame.winfo_width(), frame.winfo_height()) | |
root.mainloop() |
「print」出力が下記のように得られます。
size 240 160