Qt for Python (PySide2) は、Qt の Python バインディングを提供するプロジェクトで、オープンソース版の Qt と同じく、LGPLv3 / GPLv3 と Qt commercial license(商用ライセンス)が適用されています。最近はクロスプラットフォーム用の GUI ライブラリとして使うことが多くなりました。
GUI のボタンなどをクリックして時間が掛かる処理をする場合、進捗を表示する QProgressBar を使いたくなります。こういう時はマルチスレッドにして GUI を表示するプログラムと、時間が掛かる処理を分離します。そうしないと処理中に GUI が固まってしまうからです。
参考サイト [1] をベースにして、自分が使いやすいようにアレンジしたサンプルを備忘録にしました。
本ブログ記事では下記の OS 環境で動作確認をしています。
Fedora 34 (Workstation Edition Prerelease) | x86_64 | |
- python3-3.9.2-1 | ||
- python3-pyside2-5.15.2-3 |
qt_progressbar.py
このサンプルでは QThread を継承した TaskThread クラス(インスタンス)で、「時間が掛かる処理」をしています。この処理ではダミーで sleep(0.1) を 101 回ループさせており、ループが終わったらスレッドを終了しています。
qt_progressbar.py の実行例
QProgressBar の見映えは、Windows 上ではちょっと異なります。
参考サイト
- python - Implement QThread with QProgressBar in PySide (or PyQt) during calculation - Stack Overflow [2019-11-28]
にほんブログ村
0 件のコメント:
コメントを投稿