2012-06-07 41 views
0

如在阅读“的wxPython在行动”我试图在本书中,一个简单的一块代码,如下所示:wxPython的计时器不工作

import wx 
import time 

class Frame(wx.Frame): 
    def __init__(self, *args, **kwargs): 
     wx.Frame.__init__(self, *args, **kwargs) 
     timer = wx.Timer(self,-1) 
     self.Bind(wx.EVT_TIMER, self.OnTimer,timer) 
     timer.Start(1000, True) 
     self.Show() 
    def OnTimer(self, evt): 
     print time.time(), evt 

app = wx.App(False) 
frm = Frame(None, -1) 
app.MainLoop() 

当我运行此,蟒蛇没有给出错误,但它不打印任何东西。奇怪,有人知道为什么吗?

+0

什么是错误? –

回答

1

不工作的原因是因为计时器在init方法结束时超出了范围,并没有真正的运行机会。正如GP89已经指出的那样,您只需要将其更改为“self.timer”即可使用。我也有一个tutorial你可以看看。

+0

你是对的,计时器在__init__末尾被垃圾收集。谢谢。 – adamsmith

0

更改timerself.timer它会工作。

我很想知道为什么它没有作为一个局部变量工作

我会的东西做垃圾回收的猜测虽然