为什么"geometry()"方法会延迟工作?

gri*_*yvp 8 python tkinter

如果我运行这个Python代码:

from Tkinter import *; w = Tk(); w.geometry( "640x480" ); print( w.geometry() )
Run Code Online (Sandbox Code Playgroud)

我将获得"1x1 + 0 + 0"输出.但是,如果我启动解释器并将其作为两个单独的命令执行,我将获得完全不同的输出:

>>> from Tkinter import *; w = Tk(); w.geometry( "640x480" ) 
'' 
>>> w.geometry() 
'640x480+101+73'
Run Code Online (Sandbox Code Playgroud)

似乎几何体不会立即应用,还需要其他东西:(.也许有人知道我需要做什么才能更新几何体?我需要它来正确地居中/定位主窗口和子窗口.

D K*_*D K 6

调用update_idletasks()窗口(或窗口小部件)将强制其几何体更新.

这是Tkinter参考文献中的一个小文本片段:

在应用程序更新其空闲任务之前,几何图形不准确.特别是,在窗口小部件和几何管理器协商其位置之前,所有几何都是"1x1 + 0 + 0".