第 3 章 フレーム

◀ 3.10 フレーム表示位置とサイズ (1))   【目  次】  3.12 フレーム表示位置とサイズ(3) ▶

999999

 更新日:


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

3.11 フレーム表示位置とサイズ(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」メソッドで取得することができます。

 「winfo_x」および「winfo_y」メソッドは、親オブジェクトに対する表示位置を取得します。取得するには下記の書式を用います。詳細は Misc クラスメソッド を参照して下さい。

object.winfo_x()
object.winfo_y()

 このメソッドで取得される値は親オブジェクト(ウィンドウの場合はクライアント領域)の左上端に対するフレームの左上端の表示位置で、「winfo_x」は x 座標、「winfo_y」は y 座標を取得します。

 「winfo_rootx」および「winfo_rooty」はスクリーンに対する表示位置を取得します。取得するには下記の書式を用います。詳細は Misc クラスメソッド を参照して下さい。

object.winfo_rootx()
object.winfo_rooty()

このメソッドで取得される値はの左上端の表示値で、「winfo_rootx」は x 座標、「winfo_rooty」は y 座標を取得します。

 フレームのサイズは Misc クラスメソッド の「winfo_width」、「winfo_height」、「winfo_reqwidth」、「winfo_reqheight」メソッドで取得することができます。

 「winfo_width」および「winfo_height」メソッドは、現在表示されているフレームの幅と高さを取得します。。取得するには下記の書式を用います。詳細は Misc クラスメソッド を参照して下さい。

object.winfo_width()
object.winfo_height()

 「winfo_reqwidth」、「winfo_reqheight」メソッドは、それぞれ、フレーム作成時の「width」、「height」オプションで設定されている幅と高さを取得します。取得するには下記の書式を用います。詳細は Misc クラスメソッド を参照して下さい。

object.winfo_reqwidth()
object.winfo_reqheight()

 フレームの現在の表示値を取得するときは、イベント処理が終了してその設定値が反映された後に行います、イベント処理の終了を待つには Misc クラスの「update」メソッドを用います。下記の書式を用います。詳細は Misc クラスメソッドのを参照して下さい。

object.update()

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

1
import tkinter as tk
2
root = tk.Tk()
3
root.geometry('300x200+100+100')
4
frame = tk.Frame(root, width=100, height=160, bg='red')
5
frame.place(x=50, y=20, width=200, height=160)
6
frame.update()
7
print('position', frame.winfo_x(), frame.winfo_y())
8
print('position_r', frame.winfo_rootx(), frame.winfo_rooty())
9
print('size', frame.winfo_width(), frame.winfo_height())
10
print('size_rq', frame.winfo_reqwidth(), frame.winfo_reqheight())
11
root.mainloop()

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

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