2025/10/25(土) [n年前の日記]
#1 [tkinter][python] Pythonのqueueやthreadingを勉強中
tkinter.ttk の Progressbar について使い方を勉強していたのだけど、ボタンを押したときに呼ばれる関数の中で時間がかかる処理をしてしまってはいけないという話を目にして、どう実装すればいいのか調べているところ。
以下のページでやり方が説明されてる。queue や threading を使う。
_【Python】Tkinterで画面が固まる原因と解決方法 #Python3 - Qiita
_GUIアプリの処理中にプログレスバーを表示したい。
_[Python] tkinterでafter_cancelの使い方がわからない
_【完全独学Python】Tkinterで進捗バー(ttk.Progressbar)を作る! - 完全独学Python
そのあたりを踏まえつつ実験中。
以下のページでやり方が説明されてる。queue や threading を使う。
_【Python】Tkinterで画面が固まる原因と解決方法 #Python3 - Qiita
_GUIアプリの処理中にプログレスバーを表示したい。
_[Python] tkinterでafter_cancelの使い方がわからない
_【完全独学Python】Tkinterで進捗バー(ttk.Progressbar)を作る! - 完全独学Python
- ボタンを押した時に、スレッドを作ってそちらに重い処理をさせる。threading を使う。
- その処理の中では tkinter のウィジェットを直接操作しない。
- queue を作って、tkinter のメインスレッドにやってほしいことを queue に貯めていく。
- queue の中に何か入ってるかチェック/処理する関数を一定の時間間隔で呼び出す仕組みにする。.after() を使って指定時間後に関数を呼び出すように設定する。
- ウインドウの閉じるボタンが押された時に、スレッドの後始末をしたり、.after() で指定された処理をキャンセルしたりしてからアプリを終了する。
そのあたりを踏まえつつ実験中。
[ ツッコむ ]
以上です。