1

「wxPythoninAction」を読んでいるときに、この本のコードを次のように簡略化して試しました。

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はエラーを出しませんが、何も出力しません。
奇妙な、誰もが理由を知っていますか?

4

2 に答える 2

4

動作しない理由は、initメソッドの終了時にタイマーがスコープ外になり、実際に実行する機会がないためです。GP89がすでに指摘しているように、「self.timer」に変更するだけで機能するはずです。チェックアウトできるチュートリアルもあります。

于 2012-06-07T13:25:12.290 に答える
1

に変更timerするself.timerと機能します。

ローカル変数として機能しない理由を知りたいのですが

ガベージコレクションと関係があると思いますが

于 2012-06-07T09:13:25.280 に答える