在阅读“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没有错误,但也没有打印任何东西。
很奇怪,谁知道为什么?
答案 0 :(得分:1)
不起作用的原因是因为计时器在init方法结束时超出范围,并且实际上没有机会运行。正如GP89已经指出的那样,你需要将其改为“self.timer”,它应该可行。我也有tutorial你可以查看。
答案 1 :(得分:0)
将timer
更改为self.timer
,它会有效。
我有兴趣知道它不能作为局部变量
的原因我猜想有关垃圾收集的事情