最小限のPythonアプリ
一通りサンプルに目を通して、なんとなくPyS60でのアプリケーションの骨組みのようなものが見えてきたような気がする。
filebrowser.pyを参考にして、アプリケーションタイトルを変更し、右ソフトキーで終了するだけのアプリを書いてみた。*1
# # myapp.py # # SYMBIAN_UID = 0x01234567 # import sys import appuifw import e32 class MyApplication: def __init__(self): self.script_lock = e32.Ao_lock() def run(self): old_title = appuifw.app.title self.refresh() self.script_lock.wait() appuifw.app.title = old_title def refresh(self): appuifw.app.title = u"MyApplication" appuifw.app.menu = [] appuifw.app.exit_key_handler = self.exit_key_handler def do_exit(self): self.exit_key_handler() def exit_key_handler(self): appuifw.app.exit_key_handler = None self.script_lock.signal() if __name__ == '__main__': MyApplication().run() # sys.exit()
self.script_lock = e32.Ao_lock()
e32.Ao_lock()で帰ってくるオブジェクトをアプリ側で保持しておいて、
self.script_lock.wait()
waitメソッドを呼ぶと、ユーザーのイベント待ちに入るようだ。
イベントに対するアクションはwaitを呼ぶ前にコールバックとなる関数やメソッドを登録しておく。
appuifw.app.exit_key_handler = self.exit_key_handler
なるほどおおおお。
s60wikiをスタンドアロンアプリにしてみる
Python for S60で動作するスクリプトを検索しているうちにs60wikiというものを見つけた。
昔、Palmを使用していたときにはPalmWikiをインストールしていたのだが、アレをちょっと思いださせるwikiスクリプトだ。
702NKIIで常用したいと思ったのだが、毎回Pythonのメニューから起動するのはめんどくさい。
そこで前回紹介したpy2sisng.pyを使ってs60wikiをスタンドアロンアプリにしてみた。
手順:
- s60wiki-20060304.py.txtをダウンロード。
- エディタで開き、2行目に以下のような行を足す。*1
# SYMBIAN_UID = 0x01234567
- 最後の行の後に以下の行を足す。
sys.exit()
- 保存後、py2sisng.pyでsisファイル化。
以上。
最初、スクリプトの最後にsys.exit()のないスクリプトをアプリ化してみたら右ソフトキー等で終了出来なくて困ったことになった。Orz
sysモジュールをimportしていない他のスクリプトをアプリ化する場合には、スクリプトの先頭付近でimport sysとしておけば良いと思われる。
*1:ここではテスト用のUIDを使っている。配布するためには正式に取得したUIDが必要。
Pythonスクリプトをスタンドアロンアプリにしてみる
PyS60 Tutorial Menuのこのページによると、PyS60向けPythonスクリプトをメニューから直接起動できるスタンドアロンアプリにできるらしい。
でも一つ問題が・・・。
スタンドアロンアプリへの変換にはpy2sisというコマンドラインツールを使うようなのだが、これはPCにしかインストールできないらしい。Orz (わたすはマカ)
しかし!
調べてみるとpy2sisと同じ働きをしてMacやLinuxで使えるツールがあった。
検索エンジンって素晴らしい。
解凍後READMEにかいてあるようにgenaifとmakesisをターミナルからぽちぽちとコンパイル。
py2sisng.pyに実行属性を与えgenaifとmakesis共々パスの通ったフォルダにおけばインストール完了。
これでターミナルから
py2sisng.py --uid=0x01234567 myscript.py
なんて具合にuid*1とPythonスクリプトを指定してやるとsisファイルが生成する。
あとは通常のS60アプリと同じように702NKIIや702NKへインストールすればOK。
エディタを入れてみる
ケータイでPythonを動作させることは出来たけれど、これだけだとスクリプトを端末上で編集できない。
テキストエディタとしてYEditというS60アプリがあるけれどもシェアウェアだしなぁ、と思っていたらPythonで書かれたテキストエディタが702NKII上で動作するらしいとわかった。
ていうかhttp://www.postneo.com/postwiki/moin.cgi/PythonForSeries60に思いっきり書いてあった。
というわけでPythonで書かれたテキストエディタを導入してみた。
さてテキストエディタにも何種類か有るのだがフィーリングで2つ選んだ。
1つめはPyED(Py_s60 Exclusive Development (PyED) download | SourceForge.net)。
簡単だぜぇ、とPythonを起動しスクリプトをメニューから選ぶと、エラーがでやがりました。Orz
モジュールが足りない・・・。
足りないモジュールはglob.pyとfnmatch.pyらしい。
Mac OS XはPythonがインストールされていたはず、とハードディスクを漁ってみたところありましたよ。
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/
を、Finderで開いてglob.pyとfnmatch.pyをデスクトップにコピー。
そしてBluetooth送信してPython lib moduleとしてインストール。
今度は起動成功。
2つめはpyEdit(http://users.tkk.fi/~lhuovine/mobile/python.html)。
こちらはv0.8をダウンロード。
sisファイルなので通常のS60アプリと同じようにインストール出来た。
こっちは楽だなぁ。
PythonスクリプトのエディタとしてはPythonのメニューから起動できるPyEDのほうが若干使いやすいかな。
でもpyEditは一般的なテキストエディタとしても十分使えるのが良い。
両方、日本語はutf-8なら読み書き可能。ただしプログラム中で日本語を使うためには、ちょっと小細工が必要な模様。
702NKIIへPythonをインストール
私のケータイ電話Vodafone 702NKIIは携帯電話だというのに、Pythonというスクリプト言語がインストールできるのだという。
Pythonはほとんど知らないのだがせっかくなのでこの機会に勉強してみようと思いインストールしてみた。
- http://opensource.nokia.com/projects/pythonfors60/のページのLatest versionからリンクをたどる。
- 現時点での最新版は1.3.1らしい。702NKIIの場合、PythonForS60_2ndEdFP2_1_3_1.SISをダウンロード。
- 702NKIIへインストール。(ところで私はMacユーザーなのでhttp://mac702nk.sourceforge.jp/wiki/index.php?MacUnsisPy%2F%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9からダウンロードできるMacUnsisPyを使った。)
にょろりんとした緑色のヘビがメニューにでたらインストール完了。
オプション > Run script > ball.py
を選ぶと緑のボールが跳ねるデモスクリプトが起動する。
ナビゲーションキーで加速をつけてみたり、ひとしきり遊んだら右ソフトキーで終了した。
他のはよくわからないのでとりあえず今日はココマデ。