第 2 章 サブウィンドウ

◀ 2.11 スクリーン表示位置とサイズ (2)   【目  次】  2.13 スクリーン中央への配置(2) ▶

999999

 更新日:


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

2.12 スクリーン中央への配置(1)(winfo_screenwidth、winfo_screenheight)

 サブウィンドウをスクリーンの中央に配置するメソッドはありません。メインウィンドウと同様にアプリケーションで設定します。1.12 スクリーン中央への配置(1)を参照して下さい。

 次のプログラムはタイトルバーを含むサブウィンドウをスクリーンの中央に配置しています。x 座標のオフセットを wx0、タイトルバーの高さを th として求めています。これらは、タイトルバーのないウィンドウではともに 0 になります。ウィンドウの高さはクライアント領域の高さに th を加算して求めています。x 座標はオフセット wx0 を考慮して補正します。

1
import tkinter as tk
2
root = tk.Tk()
3
root.wm_geometry('300x200')
4
sub = tk.Toplevel(root, width=300, height=200, bg='red')
5
root.update()
6
ww, wh = sub.winfo_width(), sub.winfo_height()
7
wx0 = sub.winfo_rootx() - sub.winfo_x()
8
th = sub.winfo_rooty() - sub.winfo_y()
9
wh = wh + th
10
sw = sub.winfo_screenwidth()
11
sh = sub.winfo_screenheight()
12
sub.wm_geometry('+'+str((int((sw-ww)/2))-wx0)+
13
        '+'+str(int((sh-wh)/2)))
14
root.wm_deiconify()
15
sub.wm_deiconify()
16
root.mainloop()