pythonでkivyを使ってGUIアプリを作る方法@Mac/Raspberry Pi

pythonでGUIアプリを作りたい

 pythonでGUIアプリをつくるとき、今までpygameというライブラリを使っていたのですが、どうもkivyというやつがモダンらしいので、MacとRaspberry Piで試してみました。

 Macの環境はMac Book Pro (Retina 2012)とMac OS X 10.10.5。Raspberry Piの環境はRaspberry Pi 3 + Raspbian Jessieで確認しました。

Mac OSへのkivyインストール

 以下のコマンドを実行。

$ brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
$ pip install -I Cython==0.23
$ USE_OSX_FRAMEWORKS=0 pip install kivy

Raspberry Piへのkivyインストール

 以下参照にRaspberry Piの基本的なインストールまでは完了している前提です。

 以下のコマンドを実行。

$ sudo apt-get update
$ sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
   pkg-config libgl1-mesa-dev libgles2-mesa-dev \
   python-setuptools libgstreamer1.0-dev git-core \
   gstreamer1.0-plugins-{bad,base,good,ugly} \
   gstreamer1.0-{omx,alsa} python-dev cython
$ sudo pip install -I Cython==0.23
$ sudo pip install git+https://github.com/kivy/kivy.git@master

 公式サイトには3行目の$ sudo pip install -I Cython==0.23記載はないですが、オプション実行せずにインストールしたら、以下のエラーが出たので修正しました。

raise ImportError('Incompatible Cython Version')

GUIアプリテスト

 hello_world.pyというファイルを以下のような中身で保存。

from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

 以下実行するとGUIのアプリが走ります。

$ python hello_world.py


 Macでの実行結果

 Raspberry PiではVNC経由で動作したら動かなくて変だなと思って、直接ディスプレイ接続したら全画面に表示されてました。

まとめ

 本当はkivyをRaspberryPi + piTFTの組み合わせで使いたいなと考えていたのですが、piTFTとRaspberry PiはSPI接続だからOpenGLES使うkivyは表示できないみたいです。fbcpを使うと解決できるかと思ったのですが、fbcp使うとタッチが使えなくなるのでこれまた問題です。そもそも、fbcpでもうまく表示したい画面を表示することができませんでした。残念。piTFTの場合は、以下参考にpygameで使うのが良さそう。

Stage 1 setup Follow Adafruit instructions for PiTFT Get the tutorial code: git clone Te...

関連記事

参照サイト

Here's the scenario: I've written a gui using the python framework Kivy, and I want to run it on a raspberry pi with this touchscreen. I've done the installatio...

Hi, i have an PiTFT Capacitive Screen and running Kivy in 1.9.0dev (checkout from 22.12.2014). If i startup an basic kivy application and touch the screen i get...

本連載では、Pythonの文法について「プログラミングの普遍的な概念を理解したうえで、Pythonのコードを実際に書く」という実践的なスタイルで解説しています。今回はプログラムやアプリケーションを配布する方法について扱います。
スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル(大)広告