LoginSignup
1
2

More than 3 years have passed since last update.

【Tips】python+kivyの開発で困ったことと解決策

Last updated at Posted at 2019-12-17

本記事の内容

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-iosgit 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/kivygit cloneして、必要なファイルをコピーすればよい。
Kivy3.appApplicationsにコピーしたのであれば、コピー先は/Applications/Kivy3.app/Contents/Resources/kivy配下にある。
※モジュール使用非推奨の可能性もある為、ソースコード改修の方がよいかもしれない。

事象:_trigger_reset_populateが使えない

事象詳細

エラーメッセージは消してしまっったが、_trigger_reset_populate項目がないみたいなことを言われる

起きていること

(おそらく)ListViewが使えなくなった。
※筆者は開発の途中でkivyのバージョンを上げた為。

解決方法

ListViewの代わりにRecycleViewを使用する。
ここにサンプルがある。
self.rv.dataは辞書型を要素に持つリストなので、表示したい値が複数種類存在する場合はvalueと同様に辞書型項目に格納して渡せばよい。

事象:RecycleViewのデフォルト位置が一番上ではない。

事象詳細

RecycleViewを一度表示、少しスクロール、戻る、またRecycleViewを表示、とすると、
いちばん上を表示して欲しいが、一度スクロールした場所をデフォルトで表示してしまう。

起きていること

省略。

解決方法

RecycleViewscroll_yに1を設定する。
これでRecycleViewを表示すると常に一番上が表示されるようになる。

事象:フォントの設定が反映されない

事象詳細

こちらの手順通りにデフォルトフォントを設定しても、反映されない。
※デフォルトフォントの初期値はRoboto

起きていること

よく分からない。

解決方法

[2020/06/14]
解決した。
ダウンロードパス/IPAexfont00301の箇所はipaexg.ttfのファイルが存在するパス"のみ"を記載する。
Configファイルで設定する方法も試したが、これだとiPhoneに実機転送した際に上手くいかない様子。

1
2
6

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
1
2