Python(kivy)でアプリ開発
育休中の空いた時間で家計簿アプリ開発中。というのも我が家はGoogle spread sheetで家計簿管理しており、集計したのを見るのが大変なのでアプリ開発しよう!と一昨年末に開始したプロジェクト(?)
前回は1年ぶりにアプリ開発しようと環境構築からし直した話だった。。
今回は無事環境が戻ってきたので、開発を進めていく。
Google Spread Sheetから値を取ってきて、グラフ化し、表示するまでのアプリ開発をここで行っていく。アプリ化するためにkivyを導入する。
その際に発生した諸々をメモとして残しておく。(何も面白くないです….)
kivyの環境構築
kivy-iosを動かすための依存パッケージをインストール
xcode-select --install
brew install autoconf automake libtool pkg-config
brew link libtoolk
pip install cython==0.28.1
kivy-iosをクローン
git clone https://github.com/kivy/kivy-ios.git
cd kivy-ios/
pip install -r requirements.txt
python自体をアプリ用にビルド
python3 toolchain.py build python3 kivy
ビルドした際に出たエラー
STDERR:
xcrun: error: SDK "iphonesimulator" cannot be located
xcrun: error: SDK "iphonesimulator" cannot be located
xcrun: error: unable to lookup item 'Path' in SDK 'iphonesimulator'
パスの確認
xcode-select --print-path
/Library/Developer/CommandLineTools
# /Applications/Xcode.app であるべき
そもそもXcode.appが見つからないのでダウンロードしてきてインストール
xcrun -sdk iphonesimulator --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk
無事パスは通ったもののkivyがないと言われるのでインストール
from kivy.app import App
ModuleNotFoundError: No module named 'kivy'
python -m pip install kivy
日本語を使えるようにする
pip install japanize-kivy
import japanize_kivy # これを追加するだけ
ボタン押してからグラフが表示されるまでが長い問題
参考サイトをもとに、ボタンを押してからグラフが表示されるまではできたが、処理が長くその間アプリが固まっているように見えてしまう。
グラフ作成中は処理中の画像を挟むような仕様にしたい。
Button:
id: button1
text: "直近3ヶ月"
font_size: 30
on_press: root.push_button()
kvファイルをこのようにすると pythonのpush_button()関数に入るが、そこで処理中の画像を表示するか、グラフ作成するかのどちらかしか行えない。
かといってthreadingを使って並列処理をするとmatplotlibとの相性が悪いのかsegmentation faultが出てしまう。
Button:
id: button1
text: "直近3ヶ月"
font_size: 30
on_press: root.push_button()
on_release: root.process(3) #追加
on_press でボタンを押した時のイベント発火
on_release でボタンを離した時のイベント発火
なのでこれをうまいこと使って、
on_press で処理中の画像表示
on_release でグラフ作成
と分けたらうまく行った。
最後に
ここに書いてるのはほとんど私がやった時のメモ程度で、、、参考サイトがとてもわかりやすかったので実際にkivy使って開発する方はそちらを参考にしてほしい。
参考サイト
この記事が気に入ったらサポートをしてみませんか?