本記事の内容
###kivy
を利用したpython
アプリの開発で困ったことと解決策を備忘として記載する。
環境(2020/04/04時点)
OS:macOS Catalina 10.15.3
kivyが使用するpythonのバージョン:3.6.5(Kivy3.appに入っているもの)
toolchain.py recipes
が表示するpython3のバージョン:3.7.1(おそらく異なっていても問題ない)
kivyのバージョン:1.10.1
事象:toolchain.py recipes
で表示されるkivy
のバージョンがおかしい
事象詳細
kivy-iosをgit clone
した直後にtoolchain.py recipes
を実行すると、kivy
のバージョンが18f37ed6e29620ee53c2a7699e0e0894e06a7f91
と表示される。
起きていること
kivy ver1.11.1
のリビジョン番号(正確にはリビジョン番号ではないが)が表示されている。
解決方法
kivy-ios/recipes/kivy/__init__.py
にバージョンがベタ書きされているので、(例えば1.10.1などに)修正する。
※特にやらなくてもよいかもしれない(私は気持ち悪く感じたので修正した)。
事象:kivy
が実行できない(import XXX
ができない)
事象詳細
ModuleNotFoundError: No module named 'kivy._clock'
と表示される
起きていること
(エラーメッセージによると)cython
のコンパイルができていないらしい。
解決方法
原因がよく分からなかったが、Kivy3.app
を一旦全削除して再度入れ直したら発生しなくなった。
事象:kivy
のモジュールがimport
できない
事象詳細
ある特定のモジュール(例えばkivy.uix.listview
など)がimport
できない
起きていること
何らかの理由により、Kivy3.app
内にモジュールが格納されていない。
※モジュール使用非推奨の為モジュールを格納しなくなった、という理由が本線か。
解決方法
master
から持ってくる。
https://github.com/nuigroup/kivy
をgit clone
して、必要なファイルをコピーすればよい。
Kivy3.app
をApplications
にコピーしたのであれば、コピー先は/Applications/Kivy3.app/Contents/Resources/kivy
配下にある。
※モジュール使用非推奨の可能性もある為、ソースコード改修の方がよいかもしれない。
事象:_trigger_reset_populate
が使えない
事象詳細
エラーメッセージは消してしまっったが、_trigger_reset_populate
項目がないみたいなことを言われる
起きていること
(おそらく)ListView
が使えなくなった。
※筆者は開発の途中でkivy
のバージョンを上げた為。
解決方法
ListView
の代わりにRecycleView
を使用する。
ここにサンプルがある。
self.rv.data
は辞書型を要素に持つリストなので、表示したい値が複数種類存在する場合はvalue
と同様に辞書型項目に格納して渡せばよい。
事象:RecycleView
のデフォルト位置が一番上ではない。
事象詳細
RecycleView
を一度表示、少しスクロール、戻る、またRecycleView
を表示、とすると、
いちばん上を表示して欲しいが、一度スクロールした場所をデフォルトで表示してしまう。
起きていること
省略。
解決方法
RecycleView
のscroll_y
に1を設定する。
これでRecycleView
を表示すると常に一番上が表示されるようになる。
事象:フォントの設定が反映されない
事象詳細
こちらの手順通りにデフォルトフォントを設定しても、反映されない。
※デフォルトフォントの初期値はRoboto
起きていること
よく分からない。
解決方法
[2020/06/14]
解決した。
ダウンロードパス/IPAexfont00301
の箇所はipaexg.ttf
のファイルが存在するパス"のみ"を記載する。
Config
ファイルで設定する方法も試したが、これだとiPhone
に実機転送した際に上手くいかない様子。