2012-06-07 21 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它會工作。

我很想知道爲什麼它沒有作爲一個局部變量工作

我會的東西做垃圾回收的猜測雖然