28 lines
1.0 KiB
Python
28 lines
1.0 KiB
Python
import tkinter as tk
|
|
|
|
def center_toplevel_window(toplevel_window, parent_window):
|
|
"""
|
|
将一个 Toplevel 窗口相对于其父窗口居中。
|
|
:param toplevel_window: 要居中的 Toplevel 窗口实例。
|
|
:param parent_window: 父窗口实例 (通常是 tk.Tk 或另一个 Toplevel)。
|
|
"""
|
|
toplevel_window.update_idletasks() # 确保窗口已经渲染,以便获取正确的尺寸
|
|
|
|
# 获取父窗口的几何信息
|
|
parent_width = parent_window.winfo_width()
|
|
parent_height = parent_window.winfo_height()
|
|
parent_x = parent_window.winfo_x()
|
|
parent_y = parent_window.winfo_y()
|
|
|
|
# 获取 Toplevel 窗口自身的几何信息
|
|
window_width = toplevel_window.winfo_width()
|
|
window_height = toplevel_window.winfo_height()
|
|
|
|
# 计算新的 x, y 坐标,使 Toplevel 窗口居中
|
|
x = parent_x + (parent_width // 2) - (window_width // 2)
|
|
y = parent_y + (parent_height // 2) - (window_height // 2)
|
|
|
|
# 设置 Toplevel 窗口的几何位置
|
|
toplevel_window.geometry(f"+{x}+{y}")
|
|
|