ファイル選択ダイアログ - Kivy Advent Calendar 2013
去年 @ytakeuch さんがブログ「人は歴史を創り出し、人は歴史を語り継ぐ」で「Kivy Advent Calendar」を書いておられました。今年は、それを引き継いで私も書いてみようかなと思います。
タイトルは「Kivy Advent Calendar 2013」とします。
メインターゲットはAndroid向けビルド済みPython実行環境「Kivy Launcher」です。
「別プラットフォームのKivy」「kivy/python-for-androidのビルド」「Scripting Layer for Android (SL4A) + Python for Android (Py4A)」「Pygame Subset for Android (PGS4A)」などの話もするかもしれません。
でも動作確認はAndroid (Nexus7-2013)でしかやっていないので... そこんとこよろしくお願いします。
さて、いつの間にか「Kivy」がWikipedia日本版に載っていました。英語版の翻訳だと思いますが、
- http://ja.wikipedia.org/wiki/Kivy
- http://en.wikipedia.org/wiki/Kivy
英語版と比べると、「2012年にPython 3.3移行のためにPSFから$5000もらった」とか書いてないとか、「PyMTにあるプロジェクトのうち革新的なもの」というよりは「PyMTの発展形である」の方がいいのではとか、いろいろ気になりますが...
ただ、せっかくファイル選択ウィジェットのサンプルコード書いているのに (ただウィジェットの書き方を示しただけで) 書き直さないと実行できない、てのが一番困るかもしれないです。
とりあえず動くように書き換えるとこんな感じになります。
(loaddialog.kv)
#:kivy 1.4.0: BoxLayout: size: root.size pos: root.pos orientation: "vertical" FileChooserListView: id: filechooser BoxLayout: size_hint_y: None height: 30 Button: text: "Cancel" on_release: root.cancel() Button: text: "Load" on_release: root.load(filechooser.path, filechooser.selection)
(main.py)
from kivy.app import App from kivy.uix.floatlayout import FloatLayout class LoadDialog(FloatLayout): def load(self, filename): pass def cancel(self): pass class LoadDialogApp(App): def build(self): return LoadDialog() if __name__ == '__main__': LoadDialogApp().run()
(android.txt)
title=loaddialog author=kivy orientation=portrait
Windows、MacOSXなどはandroid.txtは必要なくて、コンソールから「python main.py」を直接実行すればOK。
Android (KivyLauncher) は /sdcard/kivy/loaddialog/ にフォルダ作って3つのファイルを入れておけば実行できるようになります。
(まあこれは、単にファイルを選択するだけで、開いたり見れたりは出来ませんが...)
追記
とりあえず25日コースで始めてしまいましたが、ネタ続くかな?