在 tkinter 中,为什么 winfo_height() 总是 return 1?

In tkinter, why winfo_height() always return 1?

这是最简单的示例。

#py3
from tkinter import *
tk = Tk()
canvas = Canvas(tk, width= 500 , height = 400)
canvas.winfo_height()
#In [4]: canvas.winfo_height()
#Out[4]: 1

您必须 pack window 中的 canvas 元素才能获得它的高度。身高return是实际身高。

>>> from tkinter import * 
>>> tk = Tk()
>>> canvas = Canvas(tk, width= 500 , height = 400)
>>> canvas.winfo_height()
1
>>> canvas.pack()
>>> canvas.winfo_height()
402

如果使用pack()函数还是不行, 您可以尝试在使用 canvas.pack() 后添加 canvas.update()