wxpython计时器不工作

wxpython计时器不工作,python,user-interface,timer,wxpython,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

在阅读“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不会给出任何错误,但也不会打印任何内容。

奇怪,有人知道为什么吗?

timer
改成
self.timer
,它就会工作

我想知道为什么它不能作为局部变量工作


我猜垃圾收集与此有关,不过将
timer
更改为
self.timer
,它就会工作

我想知道为什么它不能作为局部变量工作


我想可能与垃圾收集有关,但这不起作用的原因是计时器在init方法结束时超出了作用域,实际上没有机会运行。正如GP89已经指出的,您只需将其更改为“self.timer”,它就可以工作了。我还有一个问题,您可以检查。

不起作用的原因是计时器在init方法结束时超出了作用域,实际上没有机会运行。正如GP89已经指出的,您只需将其更改为“self.timer”,它就可以工作了。我还有一个计时器,你可以签出。

你说得对,计时器在初始化结束时被垃圾收集。谢谢。你说得对,计时器在初始化结束时被垃圾收集。谢谢