2012-07-10 3 views
0

wxPython에서 wx.Frame이 있고 크기 조정시 중간 및 최종 업데이트를하고 싶습니다.threading.Timer.start()에서 응용 프로그램이 멈 춥니 다.

크기 조정 이벤트가 없기 때문에 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 :

크기 조정 핸들러 및 타이머 메서드에 대한 코드 당신이이 끝 크기 조정 이벤트를 대신 말해 줘요 얻는 방법을 알고 있다면.

답변

1

크기 조정 중에 왜 업데이트해야합니까? 어쨌든 wx.Timer()를 사용하는 것이 더 나을 것이라고 생각합니다. 나는 당신이 스레드 안전하지 않은 것을하고 그것이 예측할 수없는 일을하고 있다고 의심합니다.

+0

나는 이것을 알지 못했다. 나는 그것을 살펴볼 것이다. – rynd

+0

'wx.Timer's가 훌륭합니다! – rynd

관련 문제