4

wx pythonを使用してGUIアプリケーションを作成しようとしていますが、タイマーイベントの間隔を制御する必要があります。現在の私のコードは次のとおりです。

self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.on_timer, self.timer)        
self.timer.Start(750) # start timer after a delay

これは正しいフレームワークですが、EVT_TIMERが発生する間隔や頻度を制御できません。私はwxTimerEventクラスを使用して理解しようとしていますが、運がありません。私はこれが私が必要とするものであるべきだと感じていますが、それは機能していません:

self.timer = wx.Timer(self)
self.timerEvent = wx.TimerEvent(self.timer.GetId(),10)
self.Bind(wx.EVT_TIMER, self.on_timer, self.timer) 

ありがとう!

4

2 に答える 2

6

これを理解するのに役立つかもしれない、しばらく前にタイマーに関するチュートリアルを書きました。基本的には、最初のコード スニペットで述べたとおりに行います。タイマーを開始し、ミリ秒単位で値を渡す必要があります。したがって、1000 = 1 秒になります。wx.TimerEvent ではそのビットは必要ありません。少なくとも、私はそれを必要としたことはありません。

とにかく、タイマー イベントは、この例では 750 ミリ秒ごと、または 1 秒弱ごとに発生します。マシンの CPU がペグされた場合、タイマー イベントが中断または遅延される可能性がありますが、それ以外の場合は非常に信頼性が高いと思います。

于 2012-05-07T17:59:41.603 に答える
2

さらに、EVT_TIMERが発生する頻度を制御する場合は、2 番目のパラメータである boolean を設定する必要がありますoneShot。デフォルトでは に設定されてFalseいますが、 のようself.timer.Start(milliseconds = 750, oneShot = True)に指定することもでき、タイマーはself.timer.Stop()ビットが表示されるまでショットを続けます。

ではごきげんよう。

于 2012-06-26T00:41:28.677 に答える