4

我正在尝试用 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) 

谢谢!

4

2 回答 2

6

不久前我写了一个关于计时器的教程,可以帮助你解决这个问题。基本上你按照你在第一个代码片段中提到的那样做。您必须启动计时器并以毫秒为单位传递一个值。所以 1000 = 1 秒。wx.TimerEvent 不需要那个位。至少,我从来不需要那个。

无论如何,在您的示例中,计时器事件每 750 毫秒触发一次,或者不到一秒。我认为如果你机器的 CPU 被固定,它可以中断或延迟计时器事件,但除此之外它们非常可靠。

于 2012-05-07T17:59:41.603 回答
2

此外,如果要控制EVT_TIMER发生的频率,则必须设置第二个参数 boolean oneShot。默认情况下,它设置为False,但您可以指定类似self.timer.Start(milliseconds = 750, oneShot = True)的内容,并且计时器将继续拍摄,直到self.timer.Stop()出现该位。

祝一切顺利。

于 2012-06-26T00:41:28.677 回答