我正在尝试将顶层窗口放置在其父窗口的中心。我试过
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()