Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】Tkinterでウィンドウを画面の中央に配置する方法

Tkinterで作成したウィンドウを画面の中央に配置したいケースはよくあります。本記事では、tk::PlaceWindow メソッドを使った簡単な方法と、ジオメトリ(geometry)を計算してプログラム的に中央へ配置する方法の2つを紹介します。

方法1:tk::PlaceWindow を使う(最も簡単)

Tkinterには、ウィンドウを画面中央に配置するための組み込みコマンド tk::PlaceWindow が用意されています。このメソッドに対象となるトップレベル(toplevel)ウィンドウを引数として渡し、配置位置として「center」を指定するだけで、ウィンドウを画面の中央に表示できます。

以下がサンプルコードです。

# tkinterライブラリをインポート
from tkinter import *

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry("600x250")

# ウィンドウを画面中央に配置
win.eval('tk::PlaceWindow . center')

# メインループを開始
win.mainloop()

実行結果

上記のコードを実行すると、600×250ピクセルのウィンドウが画面の中央に表示されます。

【Python】Tkinterでウィンドウを画面の中央に配置する方法

方法2:geometry() で座標を計算して配置する

tk::PlaceWindow を使わずに、画面サイズとウィンドウサイズから座標を自前で計算して中央に配置することもできます。この方法は、より細かい制御が必要な場合に便利です。

from tkinter import *

win = Tk()
win.geometry("600x250")

# 画面とウィンドウのサイズを取得
win.update_idletasks()
screen_width = win.winfo_screenwidth()
screen_height = win.winfo_screenheight()
window_width = win.winfo_width()
window_height = win.winfo_height()

# 中央に配置するための座標を計算
x = (screen_width // 2) - (window_width // 2)
y = (screen_height // 2) - (window_height // 2)

# 計算した座標でウィンドウを配置
win.geometry(f"600x250+{x}+{y}")

win.mainloop()

まとめ

手軽に中央配置したい場合は tk::PlaceWindow . center を使うのがおすすめです。一方、配置位置を細かく調整したい場合や、特定の条件下でのみ中央に表示したい場合は、winfo_screenwidth() などの情報をもとに geometry を動的に設定する方法が有効です。用途に応じて使い分けてください。

  1. Python Tkinterでルートウィンドウを非表示・破棄する2つの方法

    Tkinterアプリケーションのテスト中に、デフォルトのウィンドウやフレームを一時的に隠したい、あるいは完全に閉じたいという場面に遭遇することがあります。Tkinterでは、withdraw()メソッドによる「非表示」と、destroy()メソッドによる「破棄」の2つのアプローチが用意されています。mainloop()とウィンドウのライフサイクルmainloop()は、外部イベントによってウィンドウが閉じられるまで、Tkinterアプリケーションを実行し続ける役割を担います。このメインループが動作している間、ウィンドウは画面上に表示され続けます。ウィンドウを完全に破棄(終了)したい場合は、de

  2. tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説

    tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo