wxpython计时器不工作
在阅读“wxPython in Action”时,我尝试了书中的代码,这是一篇简化的文章,如下所示: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
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”,它就可以工作了。我还有一个计时器,你可以签出。你说得对,计时器在初始化结束时被垃圾收集。谢谢。你说得对,计时器在初始化结束时被垃圾收集。谢谢