在初始化内部获取窗口的宽度和高度

时间:2019-05-14 00:53:55

标签: python tkinter

我正在使用 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

1 个答案:

答案 0 :(得分:0)

在窗口被绘制到屏幕上之前,它的宽度和高度仅为1,因为有很多因素会影响其实际大小。

如果需要大小,可以使用winfo_reqwidth()winfo_reqheight()

根据winfo_width命令的规范文档:

  

返回一个十进制字符串,以像素为单位给出窗口的宽度。首次创建窗口时,其宽度为1像素;宽度最终将由几何管理器更改,以满足窗​​口的需求。如果在创建窗口小部件后立即需要真实宽度,请调用update来强制几何管理器对其进行排列,或者使用winfo reqwidth获取窗口的请求宽度,而不是其实际宽度。