1.10 スクリーン表示位置とサイズ (1)(wm_geometry、geometry、winfo_geometry、update)
メインウィンドウを作成すると、スクリーン上での表示位置はシステムが自動的に設定します(概ねスクリーンの左上)。この表示位置は Wm クラスメソッド の「wm_geometry」または「geometry」メソッドで設定、取得することができます。
ウィンドウのサイズは、固有オプション の「width」と「height」オプションで設定しましたが(1.4 サイズ 参照)、表示位置と同じ「wm_geometry」または「geometry」メソッドで設定、取得することができます。
「wm_geometry」、「geometry」メソッドでウインドウのサイズと表示位置を設定、取得するには下記の書式を用います。詳細は Wm クラスメソッド を参照して下さい。
引数 newGeometry は、設定する値を「幅 x 高さ ± x座標 ± y座標」のフォーマットでの文字列で指定します。値はピクセル単位の整数値です。「幅 x 高さ」または「± x 座標 ± y 座標」のいずれかを省略することができます。省略すると、元の設定値が用いられます。
このメソッドで「幅 x 高さ」を設定すると、以後、「width」と「height」オプションの設定値は無視されます。「width」と「height」オプションの設定を有効にするには、引数に空文字「''」を設定した「wm_geometry」または「geometry」メソッドを実行します。
引数 newGeometry に値を指定いないか「None」を指定すると、メソッドは現在のサイズと表示位置を設定フォーマットの文字列で返します。
現在のサイズと表示位置は「winfo_geometry」メソッドでも同様に取得することができます。下記の書式を用います。詳細は Misc クラスメソッドのを参照して下さい。
ウィンドウの設定値を取得ときは、イベント処理が終了してその設定値が反映された後に行います、イベント処理の終了を待つには Misc クラスの「update」メソッドを用います。下記の書式を用います。詳細は Misc クラスメソッドのを参照して下さい。
次のプログラムは「wm_geometry」メソッドでウィンドウの表示位置とサイズを設定しています。設定後の値を「wm_geometry」と「winfo_geometry」メソッドで取得して「print」出力しています。値の取得には、設定値がウィンドウに反映された後に実行する必要があります。そのため、ウインドウへの反映が処理されるまで待機する「update」メソッドを「「print」出力の前に実行しています。
import tkinter as tk | |
root = tk.Tk() | |
root.wm_geometry('300x200+500+100') | |
root.update() | |
print(root.wm_geometry()) | |
print(root.winfo_geometry()) | |
root.mainloop() |
「print」出力が各キーワードに対して下記のように得られます。
300x200+500+100