2022-01-28

PySide6: QProgressDialog と QThread

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています。最新のバージョンは Qt6 に対応した PySide6(記事執筆時点で 6.2.2.1)です。

大きなファイルを読み込むときや、時間がかかる処理をしている時、GUI が反応しなくなります。自分用にちゃちゃっと作る GUI プログラムではそれでも我慢できますが、他の人も利用するようになったら、ちとダサいです。プログラムが固まると苦情を受けること必至です。ひと手間かけてスレッドで処理を分ければいいのですが、結局のところ、処理が終わるまでは他の処理をできなくして、進捗だけ表示させておけば良い場合が多いです。

そんなとき、QProgressDialog を利用すれば、進捗ダイアログで表示させ modal にしておけば、進捗を表示する上、親ウィンドウの操作ができなくなって便利です。

本記事では、下記の OS 環境を使用しています。

Fedora Linux 35 Workstation x86_64

まずは、ボタンをクリックしてダミーのタスクを実行し、その進捗を表示させるサンプルです。

qt_progressdialog.py の実行例
qt_progressdialog.py

一方、進捗を測る数字を取れない場合もあります。そんなときは、QProgressDialog の setRange メソッドで (0, 0) としておけば、進捗に関係なく進捗バーが動いているようになります。

qt_progressdialog_2.py の実行例
qt_progressdialog_2.py

QProgressDialog のダイアログ画面では、デフォルトでキャンセルボタンが表示されます。今回は良いサンプルを用意できなかったので、表示しないようにしてしまいましたが、サンプルを工夫できれば、あらためて紹介します。

参考サイト

  1. QProgressDialog — Qt for Python
  2. QThread — Qt for Python

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: