我正在使用 Python 和 Tkinter ,并且我有一个函数(我们将其称为getWinProperties)在初始化Frame时运行,该函数在我运行后运行配置宽度和高度(例如self.configure(width=width, height=height)
)。我需要获取Frames当前的宽度和高度,以便在函数内部使用,该函数也需要在框架初始化之外使用。
当我使用self.winfo_width()
和self.winfo_height()
时,甚至在self.update()
之后,我也会得到1个宽度和1个高度。
class CustomFrame(Frame):
def __init__(self, width, height):
self.configure(width=width, height=height)
self.getWinProperties()
def getWinProperties(self):
self.update()
width = self.winfo_width()
height = self.winfo_height()
print(width, height)
我希望初始化框架时,print(width, height)
将打印__init__(self, width, height)
的宽度,但是会打印1, 1
答案 0 :(得分:0)
在窗口被绘制到屏幕上之前,它的宽度和高度仅为1,因为有很多因素会影响其实际大小。
如果需要大小,可以使用winfo_reqwidth()
和winfo_reqheight()
。
根据winfo_width
命令的规范文档:
返回一个十进制字符串,以像素为单位给出窗口的宽度。首次创建窗口时,其宽度为1像素;宽度最终将由几何管理器更改,以满足窗口的需求。如果在创建窗口小部件后立即需要真实宽度,请调用update来强制几何管理器对其进行排列,或者使用winfo reqwidth获取窗口的请求宽度,而不是其实际宽度。