第 4 章 ラベルフレーム

◀ 4.13 ラベルフレーム表示位置とサイズ(1)   【目  次】  4.15 ラベルフレーム表示位置とサイズ(3) ▶

999999

 更新日:


 このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。

4.14 ラベルフレーム表示位置とサイズ(2)(winfo_x、winfo_y、winfo_rootx、winfo_rooty、winfo_width、winfo_height、winfo_reqwidth、winfo_reqheight、update)

ラベルフレームの表示位置はフレームと同様に Misc クラスメソッド の「winfo_x」、「winfo_y」、「winfo_rootx」、「winfo_rooty」メソッドで取得することができます。また、ラベルフレームのサイズはフレームと同様に Misc クラスメソッド の「winfo_width」、「winfo_height」、「winfo_reqwidth」、「winfo_reqheight」メソッドで取得することができます。ラベルフレームの現在の表示値を取得するときは、イベント処理が終了してその設定値が反映された後に行います、イベント処理の終了を待つには Misc クラスの「update」メソッドを用います。「3.11 フレーム表示位置とサイズ(2)」を参照して下さい。


次のプログラムは「width」と「height」オプションでラベルフレームサイズを指定した後、「place」メソッドでフレームの表示位置とサイズを設定しています。フレームの表示位置とサイズを各メソッドで取得して「print」出力しています。値の取得には、設定値がウィンドウに反映された後に実行する必要があります。そのため、ラベルフレームへの反映が処理されるまで待機する「update」メソッドを「「print」出力の前に実行しています。

1
import tkinter as tk
2
root = tk.Tk()
3
root.geometry('300x200+100+100')
4
labelframe = tk.LabelFrame(root, width=100, height=150,
5
        bg='red',
6
        text='labelframe', labelanchor='n')
7
labelframe.place(x=50, y=20, width=200, height=160)
8
labelframe.update()
9
print('position', labelframe.winfo_x(),
10
        labelframe.winfo_y())
11
print('position_r', labelframe.winfo_rootx(),
12
        labelframe.winfo_rooty())
13
print('size', labelframe.winfo_width(),
14
        labelframe.winfo_height())
15
print('size_rq', labelframe.winfo_reqwidth(),
16
        labelframe.winfo_reqheight())
17
root.mainloop()

「print」出力が各メソッドに対して下記のように得られます。

position 50 20
position_r 158 151
size 200 160
size_rq 100 150