LoginSignup
11
21

More than 5 years have passed since last update.

Kivy + PythonでマルチプラットフォームなGUIアプリ開発を試してみる

Posted at

TL;DR

PyQtで(ライセンス的にもSAN値的にも)大幅に消耗したのでkivyを使ってみたらQOD(Quality of Developing)が向上した話

kivyって何よ

kivyは、Pythonでマルチプラットフォーム対応のGUIアプリケーションを作るためのライブラリです。

Kivyは、MITライセンスのもと、オープンソースで開発がされているため、Qt等とくらべてライセンス的にも嬉しい仕様になってます。Qtの場合、悪しき†LGPLv3†のおかげで、会社でコードを書く際にかなり頭を悩ませていました。しかし、Kivyを使用すれば、商用としてのマルチプラットフォームGUIアプリ開発のコストを大幅に削減することができます。すごい!

おまけにレンダリングにはOpenGLを使用しているため、GPUによる恩恵を十分受けることができます。

ちなみに、Kivyで作成されたアプリは、以下デバイスに対応することができます(すごい)

  • Linux
  • Windows
  • Mac OSX
  • Android
  • iOS
  • Raspberry Pi

インストール方法

Windowsの方

※以下インストール手順中に「Permission denied」といったようなエラーがでた場合は、コマンドプロンプトを管理者権限で実行してください。

1. pip等のコマンドを最新に更新

python -m pip install --upgrade pip wheel setuptools

2. 依存ライブラリの導入

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy.deps.gstreamer

MemoryErrorが出た場合

pip installのあとに-no-chache-dirフラグを追加して実行しなおして下さい。

python -m pip install –no-cache-dir --upgrade pip wheel setuptools

Pythonのバージョンが3.5以上の場合

glewの代わりにangleをバックエンドとして使用するらしいので、以下コマンドで導入してください。

python -m pip install kivy.deps.angle

3. kivy本体のインストール

python -m pip install kivy

4. (必要な人)サンプルプログラムのインストール

python -m pip install kivy_examples

サンプルプログラムは、Pythonがインストールされているフォルダのshareフォルダ以下のインストールされます。

実際に起動する際は、以下のように直接パスを指定して起動します。

python share\kivy-examples\demo\showcase\main.py

Macの方

※macOSX v10.7 Lion以降(32bitを除く)を使っている方は、開発に必要なpython3の開発環境と各種パッケージを同梱したKivy.appというパッケージをkivy側が提供しています。公式サイトから入手してください。

1. Homebrew経由で必要なライブラリをインストール

brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

2. PyPI経由でCythonをインストール

pip install Cython==0.26.1

3. kivy本体のインストール

※【2018/5/1】現在、PyPIのリポジトリ経由でインストールすると、MIX_INIT_*の定数使用箇所でビルドが落ちてしまう不具合があります。そのため、以下手順では、kivyのmaster(dev version)をインストールしています。詳細→https://github.com/kivy/kivy/pull/5459

pip install https://github.com/kivy/kivy/archive/master.zip

Linuxの方

LInuxの場合、ディストリビューションによってかなり手順が複雑・特殊なので、詳しくは公式ドキュメントを参照してください。

ウィンドウを表示してみる

kivyのアプリを構成する最小限のコードは以下のとおりです。

main.py
from kivy.app import App
from kivy.uix.widget import Widget


class MainWindow(Widget):
    pass


class HelloWorldApp(App):
    def build(self):
        return MainWindow()


if __name__ == '__main__':
    HelloWorldApp().run()

実行すると、以下のような黒いウインドウが出ます。これで、kivyアプリが作成されました。

Screen Shot 2018-05-01 at 21.20.59.png

公式チュートリアル

公式のチュートリアルとして、「Pong」と呼ばれるピンポンゲームを作るチュートリアルが公開されてます。

気になる方はやってみてください。

参考文献

11
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
21