0

我有一个wx.Frame来自 wxPython 的信息,想对调整大小进行中间和最终更新。

因为我没有找到调整大小结束事件,所以我的方法是wx.EVT_SIZE在我开始的计时器中进行中间更新和最终更新wx.EVT_SIZE。它大部分时间都在工作,但有时它会挂起threading.Timer.start(意思Before是最后打印[见代码])。你知道为什么吗?

这是调整大小处理程序和计时器方法的代码:

def _on_resize(self, event):
    self.Layout()
    self._resize_lock.acquire()
    print 'resize event'
    #Intermediate update is done here
    self._resize_lock.release()
    if self._resize_timer != None:
        self._resize_timer.cancel()
    self._resize_timer = threading.Timer(0.75,
        self._resize_timer_method)
    print 'Before'
    self._resize_timer.start()
    print 'After'

def _resize_timer_method(self):
    self._resize_lock.acquire()
    print 'resize timer'
    #Final update is done here
    self._resize_lock.release()

PS:如果您知道如何获得调整大小结束事件,请告诉我。

4

1 回答 1

1

为什么在调整大小时必须更新?无论如何,我认为你最好使用 wx.Timer()。我怀疑您正在做的事情不是线程安全的,这会使事情变得不可预测。

于 2012-07-11T13:15:25.930 回答