调整大小时调用wxpython小部件事件的函数会被调用多次

时间:2011-06-19 11:37:08

标签: python wxpython

我使用wxpython工具包在python中创建了一个带有GUI的小应用程序。它由一个框架作为顶部窗口和100个StaticText子窗口小部件组成。我已将其大小事件(wx.EVT_SIZE)绑定到OnResize函数,该函数根据StaticText小部件的大小更改其字体。 (这有助于在运行时相应地调整框架窗口大小时增加或减小窗口小部件字体的大小。)

现在的问题是,每当我调整框架大小时,OnResize函数都会调用4 times。这大大减慢了我的应用程序的启动速度(以及它的大小调整。)我想要的是OnResize函数必须只调用一次。

这有可能吗?

1 个答案:

答案 0 :(得分:5)

考虑另一种方法。

保留先前处理的大小的变量。然后,在您的大小处理程序中,如果自上次大小事件以来小部件的大小实际发生了更改,则仅更改字体大小。

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