六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 37|回复: 0

搭建python for s60开发环境(含模拟器)

[复制链接]

升级  70.67%

46

主题

46

主题

46

主题

秀才

Rank: 2

积分
156
 楼主| 发表于 2013-1-15 02:57:07 | 显示全部楼层 |阅读模式
目标平台: s60 第三版
python for s60版本:1.9.4,这个版本已支持python2.5.x

需要准备的:

1,ActivePerl-5.6.1.638-MSWin32-x86.msi,从http://www.activestate.com/下载
2,S60-SDK-200634-3.1-Cpp-f.1090b.zip从http://www.forum.nokia.com/下载
3,Python_1.9.4.sis,PythonScriptShell_1.9.4_3rdEd.sis,PythonForS60_1.9.4_Setup.exe,Python_1.9.4_SDK_3rdEd_with_OpenC.zip 从https://garage.maemo.org/frs/?group_id=854下载

pc端安装

首先安装ActivePerl-5.6.1.638-MSWin32-x86.msi,按默认next直到完成

接着解压安装S60-SDK-200634-3.1-Cpp-f.1090b.zip,(试用22天,22天后需要一个序列号,注册一个nokia forum帐号,免费获得)安装完成后,C盘有两个目录C:\Symbian和C:\Nokia

解压Python_1.9.4_SDK_3rdEd_with_OpenC.zip,拷贝Epoc32目录至C:\Symbian\9.2\S60_3rd_FP1\Epoc32

安装PythonForS60_1.9.4_Setup.exe,安装后会有一个图形界面工具,可以将py脚本转换为sis

运行模拟器C:\Symbian\9.2\S60_3rd_FP1\Epoc32\Release\Winscw\Udeb\Epoc.exe 进入应用程序管理即可进行测试,python脚本存放路径C:\Symbian\9.2\S60_3rd_FP1\Epoc32\winscw\c\python

(注意,在模拟器上安装sis受限)

手机安装

首先您需要一个蓝牙或数据线

安装Python_1.9.4.sis,PythonScriptShell_1.9.4_3rdEd.sis即可,在应用程序目录中有个PythonScriptShell图标,在手机存储器下会有一个python目录,这是你的脚本存放的位置

上传您的脚本,用PythonScriptShell进行测试



例子:

import osimport appuifwimport e32import dir_iterclass Filebrowser:    def __init__(self):        self.script_lock = e32.Ao_lock()        self.dir_stack = []        self.current_dir = dir_iter.Directory_iter(e32.drive_list())    def run(self):        from key_codes import EKeyLeftArrow        entries = self.current_dir.list_repr()        if not self.current_dir.at_root:            entries.insert(0, (u"..", u""))        self.lb = appuifw.Listbox(entries, self.lbox_observe)        self.lb.bind(EKeyLeftArrow, lambda: self.lbox_observe(0))        old_title = appuifw.app.title        self.refresh()        self.script_lock.wait()        appuifw.app.title = old_title        appuifw.app.body = None        self.lb = None    def refresh(self):        appuifw.app.title = u"File browser"        appuifw.app.menu = []        appuifw.app.exit_key_handler = self.exit_key_handler        appuifw.app.body = self.lb    def do_exit(self):        self.exit_key_handler()    def exit_key_handler(self):        appuifw.app.exit_key_handler = None        self.script_lock.signal()    def lbox_observe(self, ind = None):        if not ind == None:            index = ind        else:            index = self.lb.current()        focused_item = 0        if self.current_dir.at_root:            self.dir_stack.append(index)            self.current_dir.add(index)        elif index == 0:                              # ".." selected            focused_item = self.dir_stack.pop()            self.current_dir.pop()        elif os.path.isdir(self.current_dir.entry(index-1)):            self.dir_stack.append(index)            self.current_dir.add(index-1)        else:            item = self.current_dir.entry(index-1)            if os.path.splitext(item)[1] == '.py':                i = appuifw.popup_menu([u"execfile()", u"Delete"])            else:                i = appuifw.popup_menu([u"Open", u"Delete"])            if i == 0:                if os.path.splitext(item)[1].lower() == u'.py':                    execfile(item, globals())                    self.refresh()                    #appuifw.Content_handler().open_standalone(item)                else:                    try:                        appuifw.Content_handler().open(item)                    except:                        import sys                        type, value = sys.exc_info() [:2]                        appuifw.note(unicode(str(type)+'\n'+str(value)), "info")                return            elif i == 1:                os.remove(item)                focused_item = index - 1        entries = self.current_dir.list_repr()        if not self.current_dir.at_root:            entries.insert(0, (u"..", u""))        self.lb.set_list(entries, focused_item)if __name__ == '__main__':    Filebrowser().run()
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表