2012-05-07 59 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毫秒觸發一次,或者稍小於一秒。我認爲如果你的機器的CPU掛鉤,它可以中斷或延遲計時器事件,但否則它們非常可靠。

2

此外,如果要控制EVT_TIMER發生的頻率,則必須設置第二個參數布爾值oneShot。默認情況下,它被設置爲False,但您可以指定類似self.timer.Start(milliseconds = 750, oneShot = True)之類的東西,並且定時器仍然會一直出現,直到出現self.timer.Stop()位。

一切順利。