【问题标题】:Get window width and height, inside init在init内部获取窗口宽度和高度
【发布时间】:2019-05-14 00:53:55
【问题描述】:

我正在使用 PythonTkinter,并且我有一个函数(我们称之为 getWinProperties)在我初始化我的 Frame 时运行,这个函数在我配置宽度和高度(例如self.configure(width=width, height=height))。我需要获取Frames当前的宽高,在函数内部使用,这个函数也需要在frame的初始化之外使用。

当我使用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

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

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

    如果你想要它要求的大小,你可以使用winfo_reqwidth()winfo_reqheight()

    来自winfo_width 命令的规范文档:

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

    【讨论】:

    • winfo_reqwidth()winfo_reqheight() 完美运行,谢谢。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2013-11-29
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多