2. 窗口居中显示

任务目标

创建一个Tkinter窗口,使其启动时自动在屏幕中央显示,而非默认的左上角位置。

实现原理

窗口居中需要两步:先让窗口更新以获取其实际尺寸,再结合屏幕分辨率计算左上角坐标。核心公式为:x = (屏幕宽 - 窗口宽) / 2,y = (屏幕高 - 窗口高) / 2。

完整代码

import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title("窗口居中示例")
root.geometry("400x300")  # 设定窗口大小

# 关键:强制更新窗口,使winfo_reqwidth()获取到真实尺寸
root.update_idletasks()

# 获取屏幕尺寸
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

# 获取窗口当前尺寸(此时已按geometry设定)
window_width = root.winfo_width()
window_height = root.winfo_height()

# 计算居中坐标
x = (screen_width - window_width) // 2
y = (screen_height - window_height) // 2

# 设置窗口位置
root.geometry(f"{window_width}x{window_height}+{x}+{y}")

root.mainloop()

运行方式

  1. 将上述代码保存为 center_window.py;
  2. 在终端执行 python center_window.py;
  3. 观察窗口出现位置。

验证方法

运行程序后,窗口应出现在屏幕正中央。可通过以下方式确认:

  • 目测窗口四边距屏幕边缘距离大致相等;
  • 在代码末尾(mainloop()前)临时添加 print(f"窗口位置: {x}, {y}"),输出值应约等于 (屏幕宽-400)/2 和 (屏幕高-300)/2 的整数部分。

常见问题

窗口位置未居中:若省略 root.update_idletasks(),winfo_width() 可能返回默认值1,导致计算错误。务必先调用该方法刷新窗口状态。