wxPython小部件的调整大小事件绑定函数在调整时被多次调用

3 投票
1 回答
1411 浏览
提问于 2025-04-16 19:51

我用Python和wxpython工具包做了一个小应用,里面有一个图形界面。这个应用有一个主窗口和100个静态文本小部件。我把它们的大小变化事件 (wx.EVT_SIZE) 绑定到了一个叫 OnResize 的函数上,这个函数会根据静态文本小部件的大小来调整它们的字体大小。(这样当我在运行时调整主窗口的大小时,文本的字体也会相应增大或减小。)

现在的问题是,每次我调整主窗口的大小时, OnResize 函数会被调用 4次。这让我的应用启动变得很慢(调整大小时也是如此)。我希望 OnResize 函数只被调用一次。

这样做有可能吗?

1 个回答

5

考虑一种不同的方法。

保持一个变量,用来记录上一次处理的大小。然后,在处理大小的地方,只有当这个小部件的大小真的发生变化时,才去改变字体大小。

def OnResize(self, event):
    w, h = size = self.GetSize()
    if size != self.previous_size:
        # update font size
    self.previous_size = size

撰写回答