Nokiaに関係ある事ない事をつらつらと。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
705NKでプログラミング その14
ここ最近Pythonの勉強と共にオブジェクト指向の勉強をしていますが、そのおかげで徐々に色々なことが見え始めてきています。その一つに、ようやくNokia Python APIの実装方法が何となく分かるようになってきました。例えば今までappuifwモジュールでは、query()のようなファンクションの実装方法はすぐに理解できたのですが、AppricationタイプやFormタイプなどの実装方法は良く分かっていませんでした。まぁこれらは、クラスの扱い方を覚えると、「あ、なるほど」みたいな感じですぐに理解できるようになるんですけど、そこに至るまでが結構遅かったような…(苦笑)。と言う訳で、今のところこれと言って新たなスクリプトのアイデアも浮かんでこないので(笑)、備忘録も兼ねて色々とAPIの実装例サンプルでも書いてみようかと思います。もちろん参考書は「Python for 702NK/702NK2プログラミングブック」です。ただこの本ではちょっと古いので、オンライン上で配布されているPyS60のライブラリリファレンスも参照することにします。

Python for 702NK/702NK2プログラミングブックPython for 702NK/702NK2プログラミングブック
(2006/09)
柴田 文彦

商品詳細を見る
今回は一番身近なappuifwモジュールを使って色々とサンプルを書いてみます。appuifwは、Application User Interface frameworkの略で、Nokia端末のユーザーインターフェースを司るモジュールです。で、ライブラリリファレンスを参照すると、

nokimani071127_001.jpg

大体こんな感じで各ユーザーインターフェースがレイアウトされているそうです。こうやって図にすると分かりやすいですね。ではこれを踏まえたうえで、各ユーザーインターフェースを表示するスクリプトを書いてみたのがこれ。

import appuifw
import e32

lock = e32.Ao_lock()

def menuitem1():
    print unicode("Item1 was selected", "utf-8")

def menuitem2():
    print unicode("Item2 was selected", "utf-8")

def menusubitem1():
    print unicode("Subitem1 was selected", "utf-8")

def menusubitem2():
    print unicode("Subitem2 was selected", "utf-8")

def exit():
    appuifw.app.set_tabs(["item"],tab)
    appuifw.app.orientation = "portrait"
    print unicode("exit", "utf-8")
    lock.signal()

def tab(index):
    if index == 0:
        print unicode("Tab1 was selected", "utf-8")
    elif index == 1:
        print unicode("Tab2 was selected", "utf-8")
    elif index == 2:
        print unicode("Tab3 was selected", "utf-8")

test = None
appuifw.app.title = unicode("appuifw test",'utf-8')
appuifw.app.body = test
appuifw.app.screen = "normal"
appuifw.app.orientation = "automatic"
appuifw.app.menu = [(unicode("Item1","utf-8"),menuitem1),
                    (unicode("submenu1","utf-8"),
                            ((unicode("Subitem1","utf-8"),menusubitem1),
                            (unicode("Subitem2","utf-8"),menusubitem2)))]
appuifw.app.exit_key_handler = exit

appuifw.app.set_tabs([unicode("Tab1","utf-8"), unicode("Tab2","utf-8"), unicode("Tab3","utf-8")],tab)

lock.wait()



これを実行させると

nokimani071127_002.jpg

こんな感じで表示されます。

nokimani071127_003.jpg

メニューもちゃんと多段表示されてます。

ちょっと苦戦したのが、exit_key_handlerの実装です。これ、ちゃんと覚えておかないと…。

あと面白いのが、

appuifw.app.orientation = "automatic"

ここの値を"landscape"に変更すると

nokimani071127_004.jpg

こんな感じで90度ローテートして表示されます。ふーん、タブって下に表示されるんですね。

まぁ、ファンクションには何も記述していないので、ただ表示するだけのスクリプトですが、ユーザーインターフェースはこんな感じで実装されます。

PS 参考書に使っている「Python for 702NK/702NK2プログラミングブック」、確かに良いんですが、APIの実装例が少ないので、できればもう少しAPIの説明やサンプルを追加して、新しいPyS60をベースにした第2版とかを出してくれるととても嬉しいんですが…。
スポンサーサイト

テーマ:Nokia - ジャンル:携帯電話・PHS

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。