wxpythonのwx.Timer

wxpythonのMatplotlibにラバーバンドを表示する - メグタンの何でもブログ の続き

GUIで一定周期で処理を繰り返したい時にはwx.Timerが便利

GUI上で一定周期で点滅表示とかを行いたい時にはメインスレッド(UIスレッド)で動くwx.Timerが便利
手書きで追加してもいいけれども wxFormBuilder で追加しよう。
タイマーで動かすための プログレスバーも追加
タイマーは additional の一番右に wxTimer があるので追加
プログレスバーは common の一番右に wxGage がある。

wxTimer には OnTimer イベントを追加して置く。
Generate Code で画面のコードを生成する。
このコードは修正してはいけない。 継承したクラスコードの方に、生成された OnTImer イベントをコピペして処理内容を追加する。

    def m_timer1OnTimer( self, event ):
        self.count = self.count + 1
        if self.count == 100:
            self.m_timer1.Stop()
        self.m_gauge1.SetValue(self.count)

タイマーの起動と停止の為に、ボタンクリックのイベントを記述する。
(ボタンクリックのイベント追加も上記と同じ)
ボタンを押す度にタイマーのスタート/ストップをトグルする。

    def m_button1OnButtonClick( self, event ):
        print("button pushed")
        if self.m_timer1.IsRunning() == False:
            self.count = 0
            self.m_timer1.Start(10)
        else:
            self.m_timer1.Stop()

wx.Timer の詳細は下記を参照
wx.Timer — wxPython Phoenix 4.2.0 documentation