如何将顶层窗口放置在父窗口的中心

  • 本文关键字:窗口 python tkinter
  • 更新时间 :
  • 英文 :


我正在尝试将顶层窗口放置在其父窗口的中心。我试过

window = Tk()
top = Toplevel(window)
x = window.winfo_x() + window.winfo_width() // 2 - top.winfo_width() // 2
y = window.winfo_y() + window.winfo_height() // 2 - top.winfo_height() // 2
top.geometry(f"+{x}+{y}")

但它似乎忽略了- top.winfo_width() // 2- top.winfo_height // 2部分。我该怎么解决这个问题?

当执行这些winfo_width()winfo_height()时,这些窗口的布局尚未确认,因此您可能会得到1x1的大小。在调用winfo_xxxx()之前,请尝试在两个窗口上调用wait_visibility()(等待窗口可见(。

from tkinter import *
window = Tk()
window.geometry('800x600')
window.wait_visibility()
top = Toplevel(window)
top.wait_visibility()
x = window.winfo_x() + window.winfo_width()//2 - top.winfo_width()//2
y = window.winfo_y() + window.winfo_height()//2 - top.winfo_height()//2
top.geometry(f"+{x}+{y}")
window.mainloop()

最新更新