2022-07-10

Kivy をちょろっと使ってみた

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

このフレームワークには、以下のアプリケーションを構築するための要素が含まれています。

  • マウス、キーボード、TUIO、OS 固有のマルチタッチイベントに対応した広範な入力サポート
  • OpenGL ES 2 のみを使用した Vertex Buffer Object およびシェーダをベースとしたグラフィックライブラリ
  • マルチタッチに対応した豊富なウィジェット
  • カスタムウィジェットを容易に設計するための中間言語(Kv)
Wikipedia より引用、翻訳、編集

Python で利用できる GUI ライブラリを求め、PyGObject, wxPython, PySide に手を出して、最近ではもっぱら PySide6 ばかりを利用しています。

GUI を使って何をしているかというと、大きな複雑なアプリを作っているわけではなく、データを主に Matplotlib でプロットして、それを操作をするためのウィジェットに使う場合がほとんどです。そのため、基本ウィジェットがそこそこ豊富でレイアウトが思うようにできればよく、GUI ライブラリに求める要求は高くはないのですが、それでも使いやすさを求めて、ときどき他の選択肢がないのかインターネットを検索しています。

そんな中、参考サイト[1] を読むと 近年、PythonのGUIライブラリの中でもっとも人気が高いものが「Kivy」です。 と Kivy が紹介されていました。知らなかった…。

ということで、遅ればせながら Kivy をちょろっと使ってみました。

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

Fedora Linux 36 x86_64
python3 3.10.5-2.fc36.x86_64
pycharm-comminity 2022.1.3-1.fc36.x86_64

Kivy のインストール

PyCharm で新しいプロジェクト (Kivy_sample) を作って、PyCharm 上のターミナルで、まずはいつもおこなうルーチンをしました。

(venv) [bitwalk@fedora-pc Kivy_sample]$ pip install pip-review
   :
   :
(venv) [bitwalk@fedora-pc Kivy_sample]$ pip-review --auto
   :
   :
(venv) [bitwalk@fedora-pc Kivy_sample]$ 

次に Kivy とサンプル (kivy_examples) をインストールします。最初なので、参考サイト [2] を見ながらやってみましたが、要するに以下だけで大丈夫です。

(venv) [bitwalk@fedora-pc Kivy_sample]$ pip install Kivy kivy_examples
   :
   :
Installing collected packages: urllib3, pygments, idna, docutils, charset-normalizer, certifi, requests, Kivy-Garden, kivy_examples, Kivy
Successfully installed Kivy-2.1.0 Kivy-Garden-0.1.5 certifi-2022.6.15 charset-normalizer-2.1.0 docutils-0.19 idna-3.3 kivy_examples-2.1.0 pygments-2.12.0 requests-2.28.1 urllib3-1.26.10
(venv) [bitwalk@fedora-pc Kivy_sample]$ 

簡単なサンプルを動かしてみた

demo/showcase/main.py

できあいのサンプルがあれば Kivy の UI がどんなものかを見映えがわかるので、インストールしたサンプル kivy_examples、venv/share/kivy-examples/demo/showcase 内にある main.py を実行してみました。

venv/share/kivy-examples/demo/showcase/main.py

デモサンプルを実行すると、ウィンドウ右上の < > をクリックしていろいろなサンプルを見ることができます。

デモサンプル showcase の実行例

自分が使いたい基本的なウィジェットは揃っているようです。この Accordions のウィジェットはいいなあと思いました。

参考サイト [3] で紹介されているサンプルもインストールしたサンプル kivy_examples に含まれていましたので、プログラムの基本構造を理解できる2つのサンプルを試しました。コードは引用して表示させていただいています。

application/app_with_build.py

まずは、Python コードだけで作る GUI アプリの例です。

application/app_with_build.py(引用)
app_with_build.py の実行例

application/app_with_kv.py

次は .kv に記述された内容を読み込んで GUI を表示する例です。どうやら .kv ファイルを直接指定するのではなく、.kv の拡張子を持ったファイルを探して読み込む仕組みのようです。

application/app_with_kv.py(引用)
application/test.kv(引用)
app_with_kv.py の実行例

所感

簡単なサンプルを動かしてみたぐらいで、どうこう言えるものではありません。しかし、参考サイト [6] などによると、Matplotlib で描画したプロットを埋め込むことは問題なくできるようです。ということは、Kivy でも自分のニーズを満たせそうです。いまのところ、マルチタッチを利用したいという場面は無さそうなのですが、もう少し Kivy の使い方をおぼえて「人気」のワケを探っていきたいと考えています。

参考サイト

  1. PythonでGUIライブラリはどれがおすすめ?|TECH PLAY Magazine [テックプレイマガジン]
  2. Installing Kivy — Kivy 2.1.0 documentation
  3. Gallery of Examples — Kivy 2.1.0 documentation
  4. Kivy 日本語の表示と日本語を入力する(Python Kivyの取説・使い方 第12回) - ふたり暮らし
  5. Kivy Basics — Kivy 2.1.0 documentation
  6. Python: Kivy で Matplotlib のグラフをプロットする - CUBE SUGAR CONTAINER [2019-07-10]

 

 

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

0 件のコメント: