很久之前买了部HP1717,最近又拿出来玩。在上面装Python。Python的windows mobile 2003 se版本是Pythonce。安装前先看看 [url]http://pythonce.sourceforge.net/Wikka/HomePage[/url],了解情况。再到 [url]http://pythonce.sourceforge.net[/url]上,找到for Arm的安装包,有2.4和2.5的Python。我觉得2.4和2.5好象区别不大,而2.4的版本上装TKinter、wxPython等控件可能容易点,于是下了2.4的安装包。2.4版的cTypes包是独立的,2.5版开始包含在里面拉。另外又下了2.4的ctypes包。
安装比较简单,2.4的安装文件复制到PPC的卡上,然后在PPC中执行就行。可以用CAB工具定制Python安装到卡上,我安装的路径是:\SD Card\python\python2.4\。ctypes包是一个压缩文件,复制到PPC上,用PPC上的rar工具解压到Python安装目录的lib\路径下就OK拉。期间试过直接用电脑解压ctypes到SD卡上的Python安装目录,不过在PPC中查看,发现解压的目录名和部分文件名都全部变成大写了,不知道为什么。由于Python是区分大小写的,这样解压的ctypes包不能正常使用。
Python标准库里面带的界面库是TKinter,虽然感觉不功能不强比较简陋,不过这是比较多实现的界面库。很多书籍中都会介绍并提供有例子代码,如《DiveIntoPython中文版》。在Pythonce上装Tkinter,参考: [url]http://pythonce.sourceforge.net/Wikka/Tkinter[/url]。下载:
[url]http://prdownloads.sourceforge.net/pythonce/Tkinter-Files.zip?download[/url]
[url]ftp://ftp.tcl.tk/pub/incoming/tcltk8_4_12_ce-arm.zip[/url]
两个压缩包。tcltk8_4_12_ce-arm.zip包中,只需要tk84.dll文件,是解决一个BUG的。Tcl84.dll、Tk84.dll、celib.dll三个文件复制到PPC的windows目录中。还要将TKinter-Files.zip中的library、Tk8.4两个包含有TCL脚本的目录放到Python能找到的路径里面(我的是这个路径:\SD Card\python\,有点奇怪,为什么是这个路径,我是根据Python运行Tkinter例子脚本时的出错信息试出来的)。这样《DiveIntoPython中文版》的Tkinter例子就可以正常运行拉。
关于DLL的存放位置,根据WINDOWS系统的使用经验,python解释器应该能加载其安装目录里面的DLL。试这将Tkinter的三个DLL放到Python安装目录,运行例子,出错,提示说DLL找不到。在Python的控制台里使用ctypes测试了下DLL的加载,能正常载入那三个DLL,应该是Tkinter编译好的模块加载问题。想了个办法解决,就是在Python目录里面新建一个tkdll.py文件,内容如下:
import ctypes
lb = ctypes.windll.LoadLibrary
lb('tcl84.dll')
lb('tk84.dll')
lb('celib.dll')
在需要Tkinter包的脚本里面,在import Tkinter之前加上import tkdll,这样就行拉,测试通过。