« Raspberry Pi でのUSB CDC ACM | トップページ | Raspberry Pi 4でscipyをimport »

2021年2月26日 (金)

TKinter afterメソッド:再帰的コールによる自動更新

GUIの表示を定期的に更新したくなるのはリアルタイムデータ処理では避けられない(と思う)。

GUI表示自体はTKinterで容易にできるようだけれど、それを定期的に更新する方法を調べて実装してみた。背景にあるのは、Pico+TWELITEによって定期的に取得する超音波距離センサー・データをGUI表示するためだ。

ここで使うのはTKinterが提供するafterメソッドだ。afterメソッドは、このメソッドコール後に実行するFunctionと、その実行までの待機時間をパラメータとして指定する。このFunctionとして、このafterメソッドを実行するFunction自体を指定すると再帰的なコールが実行される。つまり、指定した待機時間後のそのFunctionが繰り返し実行されるようになるわけだ。このFunctionにてGUIを描画すれば、定期ていなGUIアップデータ実現する。

class GUI(tk.Frame):

   def update(self):

      # GUIを描画するコード

      self.after(100,self.update) # 100ms後に自分自身を実行する。結果的にループ化する


if __name__ == "__main__":
   gui = tk.Tk()
   app = GUI(master = gui)
   app.update()  # updateをコールして再帰的コールをキックする
   app.mainloop() # 以後のイベント処理はmainloop内で実行される

ネット上に公開されている先人の知恵に学びながら作成した参考コードは以下からダウンロードできる。

ダウンロード - tktest04.py

また具体的な工作内容はこちらから参照できる。

aftetrメソッドを上手く使えばいろいろな事ができそうだ。

 

« Raspberry Pi でのUSB CDC ACM | トップページ | Raspberry Pi 4でscipyをimport »

ラズパイ日記」カテゴリの記事

TWELITE日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« Raspberry Pi でのUSB CDC ACM | トップページ | Raspberry Pi 4でscipyをimport »