我正在尝试使用wx python编写一个gui应用程序,我需要控制计时器事件的间隔。这是我目前的代码:
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)
谢谢!
答案 0 :(得分:6)
我前一段时间写了tutorial on timers,这可能有助于你解决这个问题。基本上你就像你在第一个代码片段中提到的那样。您必须启动计时器并以毫秒为单位传递一个值。所以1000会= 1秒。你不需要wx.TimerEvent。至少,我从来不需要那个。
无论如何,在您的示例中,计时器事件每750毫秒触发一次,或者不到一秒钟。我想如果机器的CPU被挂起,它可以中断或延迟定时器事件,但是否则它们非常可靠。
答案 1 :(得分:2)
此外,如果要控制EVT_TIMER
出现的频率,则必须设置第二个参数布尔值oneShot
。默认情况下,它设置为False
,但您可以指定类似self.timer.Start(milliseconds = 750, oneShot = True)
的内容,并且计时器仍会显示,直到self.timer.Stop()
位出现。
一切顺利。