wxpython计时器无法正常工作

时间:2012-06-07 03:38:55

标签: python user-interface timer wxpython

在阅读“wxPython in Action”时,我尝试了书中的代码,一个简化的部分,如下所示:

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()

当我运行它时,python没有错误,但也没有打印任何东西。
很奇怪,谁知道为什么?

2 个答案:

答案 0 :(得分:1)

不起作用的原因是因为计时器在init方法结束时超出范围,并且实际上没有机会运行。正如GP89已经指出的那样,你需要将其改为“self.timer”,它应该可行。我也有tutorial你可以查看。

答案 1 :(得分:0)

timer更改为self.timer,它会有效。

我有兴趣知道它不能作为局部变量

的原因

我猜想有关垃圾收集的事情