即使在使用pack()之后,winfo_width()也返回1

Vip*_*jan 4 python resize tkinter

我已经在线搜索过,我已经尝试过自己解决这个问题,但是我无法解决它.即使在渲染小部件之后,winfo函数也会返回错误的高度和宽度

from tkinter import *

root = Tk()

frame = Frame(root)

label1 = Label(frame, text = "hello")
label1.pack()

label2 = Label(frame, text = "hello")
label2.pack()

label3 = Label(frame, text = "hello")
label3.pack()

frame.pack()    
print(frame.winfo_width(),frame.winfo_height())

#prints "1 1"

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

Pad*_*ham 9

你需要update_idletasks:

调用所有待处理的空闲任务,而不处理任何其他事件.这可用于在必要时执行几何管理和重绘小部件,而无需调用任何回调.

frame.pack()
root.update_idletasks() 
print(frame.winfo_width(), frame.winfo_height())
Run Code Online (Sandbox Code Playgroud)