注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 可扩展、高可用、负载均衡..
 帮助

PPC上的Python IDE


2007-10-16 13:07:36
 标签:pythonce 2003se venster   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://seewind.blog.51cto.com/249547/46354
        在http://pythonce.sourceforge.net/Wikka/VensterCE看到Pythonce里的另一套界面库。安装比较简单,从http://sourceforge.net/projects/vensterce上,下载VensterCE最新的压缩包,解压,将里面的venster目录复制到Python安装目录的Lib\里面就行。VensterCE需要ctypes包。
        VensterCE是封装原生的windows mobile界面控件为Python对象,由于使用系统原生的界面控件,速度快,不需要附带其他DLL;封装成Python对象后,使用上更方便。下载的包里面包含有tutorial目录,教如何使用Venster。还有个pyceide目录,里面就是一个PPC上的Python IDE实用程序。
        要运行pyceide程序,需要SciLexer.dll(提供了编辑器、控制台控件)。这个DLL在shared目录,里面还有pyceide用到的一个字体文件Andale_Mono.ttf。Andale_Mono.ttf复制到windows\font\目录,SciLexer.dll复制到Python的安装目录。运行pyceide\low-res\pyceide.py文件就行(hi-res目录中的运行会出没有什么目录,不知道为什么?)。
        pyceide程序有一下页面:文件编辑、控制台、类游览器(class browser)、关于。
文件编辑功能:能同时打开多个py文件进行编辑,有代码折叠功能,PYTHON语法高亮功能;
控制台:能直接执行Python语句,能运行打开的py文件;
类游览器:这个功能很好用,使用pyclbr.py模块,能分析打开的某个py文件,显示出该文件的类结构树,方便查看定位代码;
关于:关于页是使用IE游览器控件显示html内容的。
        使用pyceide,在PPC上看PY文件,感觉真不错。在使用过程中,发现一个不好用的地方,就是pyceide打开文件,只能显示顶层目录中的文件(这应该是windows mobile 系统的问题)。到网上查了些资料,发现系统提供的open 窗体就这个样,真不友善。后来找到篇文章《Windows Mobile 下面最通用的浏览文件对话框代码》,里面是C的代码,了解后,觉得可行,于是尝试其中的使用tGetFile.dll方法。从http://www.onlinedown.net/soft/53771.htm下载了tGetFile.dll汉化版,将该dll复制到Python的安装目录,修改Python安装目录\lib\venster目录的comdlg.py文件,在文件最后加入以下内容:
try:
    gfDll = ctypes.windll.LoadLibrary('tGetFile.dll')
except:
    gfDll = None
print 'tGetFile.dll:', gfDll
def GetFileFunc(isOpen=True):
    '''use tGetFile.dll
    '''
    if not gfDll:
        return None
   
    gfFunc = gfDll.tGetFile
    if not gfFunc:
        return None
    return gfFunc(isOpen, byref(self))

class OpenFileDialogEx(OpenFileDialog):
    def DoIt(self):
        if gfDll:
            return GetFileFunc()
        else:
            return OpenFileDialog.DoIt(self)
class SaveFileDialogEx(SaveFileDialog):
    def DoIt(self):
        if gfDll:
            return GetFileFunc(False)
        else:
            return OpenFileDialog.DoIt(self)
 
 
修改pyceide.py文件,将其中所有的OpenFileDialog改为OpenFileDialogEx,其中所有的SaveFileDialog改为SaveFileDialogEx,这样就使用了tGetFile.dll中的打开、保存文件窗体,方便多拉。

本文出自 “seewind” 博客,请务必保留此出处http://seewind.blog.51cto.com/249547/46354


附件下载:
  vensterce-beta-2
  tGetFile汉化版




    文章评论
 
2007-12-02 05:36:17
我实践了一下,不错,可能是版本的原因,添加的程序需要修改一下
try:
  # 在这里不在要“ctypes.” 因为前面已经引用“from ctypes import *"
  gfDll = windll.LoadLibrary('tGetFile.dll')
except:
  gfDll = None
print 'tGetFile.dll:', gfDll

# 函数相应修改一下
def GetFileFunc(obj, isOpen=True):
  '''use tGetFile.dll
  '''
  if not gfDll:
    return None
 
  gfFunc = gfDll.tGetFile
  if not gfFunc:
    return None
  # 把传入的obj 作为参数
  return gfFunc(isOpen, byref(obj))

class OpenFileDialogEx(OpenFileDialog):
  def DoIt(self):
    if gfDll:
        # 这里应把self 作参数传入
        return GetFileFunc(self, True)
    else:
        return OpenFileDialog.DoIt(self)
class SaveFileDialogEx(SaveFileDialog):
  def DoIt(self):
    if gfDll:
        # 这里也是
        return GetFileFunc(self, False)
    else:
        return OpenFileDialog.DoIt(self)

基本上这样就可以了,注意的是Python是大小写相关联的,连库文件名都是这样,这里是用到'tGetFile.dll', 但如果从http://www.tillanosoft.com/ce/tgetfile.html 下载的最新版本安装后可能文件名变为'tgetfile.dll',应相应改动。

2007-12-05 13:25:11
呵呵。。是啊,代码有错,谢谢指正。

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: