我有来自wxPython的wx.Frame
,并希望在调整大小时进行中间和最终更新。
因为我没有找到调整大小结束事件,所以我的方法是在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:如果您知道如何结束调整大小的事件,请告诉我。
答案 0 :(得分:1)
为什么在调整大小时需要更新?无论如何,我认为你最好使用wx.Timer()。我怀疑你做的事情不是线程安全的,而且让事情变得无法预测。