最小限の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

なるほどおおおお。

*1:スタンドアロンアプリにするときはimport sysとsys.exit()をコメントアウト