2022-07-28

プログレスバー (ProgressBar) 〜 Kivy

Kivy は、NUI (Natural User Interface) を持つモバイルアプリやその他のマルチタッチアプリケーションソフトウェアを開発するためのフリーでオープンソースの Python フレームワークです。MIT ライセンスのもとで配布され、Android, iOS, Linux, macOS そして Windows で動作させることができます。

Wikipedia より引用、翻訳、編集

使ったことのなかった Python の GUI ライブラリ(フレームワーク)、Kivy に興味を持ったので [1]、ひととおりウィジェットのサンプルを作ってみようとしています。サンプルを作っていくにあたって、どんなスタイルでコーディングするか、テンプレートみたいなものを固めていこうとあれこれ試し始めました。

今回はプログレスバーのサンプルを紹介します。

Python のコードのみのサンプルと、UI 部分を分離して Kv 言語で記述した同じ動作をするサンプルを併せて紹介しています。

下記の環境で動作確認をしています。

Fedora Linux 36 x86_64
python3 3.10.5-2.fc36.x86_64
Kivy 2.1.0

ProgressBar (Python)

ProgressBar は、タスクの進捗状況を視覚化するために使用するウィジェットです。

進捗を表示するデモ用に、threading を使って sleep とループでダミーのタスクを実行しています。しかし、PySide6 (Qt) でスレッドを作るときに比べるとあまりに単純にしてしまっているので、スレッドの扱い方が間違っているかもしれないと心配しています。とりあえず動いていますが…。😅

kivy_progressbar.py
kivy_progressbar.py の実行例

ProgressBar (Python + Kv)

指定したファイルを読み込むようにしたかったので、ここでは Builder.load_file() を使って、指定したファイルを読み込むようにしています。

kivy_progressbar_1.py
kivy_progressbar_1.kv
kivy_progressbar_1.py の実行例

Kv 言語で記述したウィジェット(この例の場合、ProgressBar の id: progress)を Python 側から指定するには、次のようにします。

kivy_progressbar_1.py 側
    pbar = ObjectProperty(None)

最初の時点では self.pbarNone です。このプロパティは、id: progress で参照される ProgressBar のインスタンスを保持するように Kv 言語で更新されます [2]

kivy_progressbar_1.kv 側
    pbar: progress

参考サイト

  1. bitWalk's: Kivy をちょろっと使ってみた [2022-07-10]
  2. Kv language — Kivy 2.1.0 documentation
  3. Widgets — Kivy 2.1.0 documentation
  4. Progress Bar — Kivy 2.1.0 documentation

 

 

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

0 件のコメント: