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()
运行方式
- 将上述代码保存为
center_window.py; - 在终端执行
python center_window.py; - 观察窗口出现位置。
验证方法
运行程序后,窗口应出现在屏幕正中央。可通过以下方式确认:
- 目测窗口四边距屏幕边缘距离大致相等;
- 在代码末尾(
mainloop()前)临时添加print(f"窗口位置: {x}, {y}"),输出值应约等于(屏幕宽-400)/2和(屏幕高-300)/2的整数部分。
常见问题
窗口位置未居中:若省略 root.update_idletasks(),winfo_width() 可能返回默认值1,导致计算错误。务必先调用该方法刷新窗口状态。