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

You*_*ddy 5 python tkinter

这是最简单的例子.

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

小智 12

如果使用pack()功能无效,您可以尝试canvas.update()在使用后添加canvas.pack().


Reu*_*ani 8

在获得它的高度之前,你必须在窗口中打包 canvas元素.高度返回是实际高度.

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

  • 为了更加迂腐,您必须使其可见,您可以使用包,地点,网格或将其嵌入文本小部件或画布中.而且你必须通过调用`update`或让'mainloop`完成它的工作来在屏幕上绘制窗口. (7认同)