Kivy備忘
Kivy使い方メモ
概要
環境
App | Version |
---|---|
Python | 3.5.2 |
hylang | 0.13.0 |
Install
- 参照先と同様にインストールを行う
- http://kuroneko0208.hatenablog.com/entry/2014/02/04/210343
- (注意) githubからkivyをDLすること
作成メモ
デフォルトで読み込まれるkvファイル
- Appを継承したクラスの名称でデフォルトの名前が決まる
- クラス名からApp部分を取り除いた部分を小文字にしてファイル名にする
- MainApp -> main.kv
- https://pyky.github.io/kivy-doc-ja/guide/lang.html
Properties
- Observer patternに該当する
- kvファイルとのやり取りとか、メモリ管理とか色々やってくれるらしい
- on_
で値変更時のイベントが飛んでくるようになるらしい
KV File
- 基本的に木構造な感じで作成していく
<LoginScreen>: # Class Name GridLayout: # Layout to the parent rows: # Property of a layout
(defclass Main [App] ;; build()の戻り値がメインのルートになる (defn build [self] (setv (. self root) (apply Button {:text "BTN"})) ;; Buttonがルートになる (. self root)))
参考プログラム
Pong Game Tutorial
- https://kivy.org/docs/tutorials/pong.html
- とりあえず作ってみたが、サイズを変えたりするとNoneで落ちたりする
- 動作が安定しないのが謎
Kivyでテトリス
- https://github.com/mmueller/tetrivy
- PC上での操作性はもっと改良する必要がある気がする
- マネして作ってみてイベント操作性とか改良してみると結構勉強になる
Tips
キーボード入力のやり方 (Windowクラス利用)
- 上記のPongGameでやった方法を利用する
- https://stackoverflow.com/questions/17280341/how-do-you-check-for-keyboard-events-with-kivy
- https://github.com/kivy/kivy/blob/master/examples/widgets/keyboardlistener.py
キーボード入力のやり方 (FocusBehaviorクラス利用)
- mixin方式で、継承するクラスに追加する
- keyboard_on_key_down()でキー押下時のイベントが取得できる
- メンバ変数のfocusがTrueにならないとイベントが取得できないので注意
- focusがあたって無いとイベントが飛んでこないので、単純にキーイベントを取るだけだと使いづらい
- https://kivy.org/docs/api-kivy.uix.behaviors.html?highlight=behavior#module-kivy.uix.behaviors
Errors
"__no_builder"的なやつ
- https://www.cocept.io/blog/development/kivy-unexpected-keyboard-no-builder/
- superの呼び出し時にkwargsを渡さないと発生するらしい
履歴
Date | Notice |
---|---|
2017/11/12 | 初回作成 |