2012-05-07 3 views
3

나는 wx python으로 GUI 응용 프로그램을 작성하려고하는데 타이머 이벤트의 간격을 제어해야합니다. 현재 내 코드는 다음과 같습니다.wxpython 타이머 이벤트 간격

self.timer = wx.Timer(self) 
self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)   
self.timer.Start(750) # start timer after a delay 

이것은 올바른 프레임 워크이지만 EVT_TIMER 간격 또는 빈도를 제어 할 수 없습니다. 나는 wx TimerEvent 클래스를 사용하여 알아낼려고했지만 행운이 없었다. 이것이 필요한 것 같지만 작동하지 않는 것 같습니다.

self.timer = wx.Timer(self) 
self.timerEvent = wx.TimerEvent(self.timer.GetId(),10) 
self.Bind(wx.EVT_TIMER, self.on_timer, self.timer) 

고마워요!

답변

6

나는 이것을 이해하는 데 도움이되는 tutorial on timers을 작성했습니다. 기본적으로 첫 번째 코드 단편에서 언급 한대로 할 수 있습니다. 타이머를 시작하고 밀리 초 단위로 값을 전달해야합니다. 따라서 1000은 1 초가됩니다. wx.TimerEvent로 그 비트가 필요하지 않습니다. 적어도, 나는 그것을 결코 필요로하지 않았다.

어쨌든 타이머 이벤트는 예제에서 750 밀리 초마다 또는 1 초 미만으로 실행됩니다. 기계의 CPU가 고정되면 타이머 이벤트를 방해하거나 지연시킬 수 있다고 생각하지만 그렇지 않은 경우에는 매우 안정적이라고 생각합니다.

2

또한 EVT_TIMER의 발생 빈도를 제어하려면 두 번째 매개 변수 인 부울 oneShot을 설정해야합니다. 기본적으로 False으로 설정되지만 self.timer.Start(milliseconds = 750, oneShot = True)과 같은 것을 지정할 수 있으며 self.timer.Stop() 비트가 나타날 때까지 타이머가 계속 촬영됩니다.

모두 최고입니다.