Eclipse + PyDev + wxPython开发Windows GUI程序

时间:2022-06-21 07:13:50
Eclipse + PyDev + wxPython开发Windows GUI程序

开发环境:
Windows 7
Eclipse版本:Classic 4.2.2
PyDev版本:2.7.3
wxPython版本:wxPython2.8-win32-unicode-2.8.12.1-py27
Python版本:ActivePython-2.7.2.5-win32-x86
pyexe版本: py2exe-0.6.9.win32-py2.7

可以不用安装wxWidgets。

一.开发环境安装
1. 安装Python环境
   安装ActivePython,然后是wxPython和它的docs-demos。全部采用默认路径安装。
2. 安装和配置Eclipse
   a. 先安装最新的Java JRE,再安装eclipse
   b. 安装PyDev。运行eclipse,点击Help -- Install new software, 在弹出的窗口中点Add, 输入下面的内容。窗口自动刷新后,在Work with:中选中PyDev,一路Next。
        Name: PyDev
        Location: http://pydev.org/updates
        
   c. 安装py2exe。
   d. 运行eclipse,在Window -- Preferences -- PyDev -- Interpreter - Python中,点击"Auto Config"按钮。
      它会自动找到python的安装目录,同时设置好需要导入的库文件目录。如果没有找到,请检查python安装目录是否在Path环境变量中。
      
二、使用PyDev和wxPython开发GUI程序
   运行eclipse,点击File - New - Project,选择PyDev Project。输入项目的名称。
   点击File - New - PyDev Module, 不用填Package,直接填Name,例如main。Template选择<Empty>。输入以下代码:
        import wx  
        if __name__ == '__main__':  
            app = wx.PySimpleApp()  
            frame = wx.Frame(parent=None)  
            frame.Show(True)  
        app.MainLoop()
   右击main.py,选择debug as -- python run, 即可看到弹出一个窗口。

三、把python脚本转化成exe
   1.在eclipse中再新建一个PyDev Module,名字为convert,输入以下代码。
        from distutils.core import setup  
        import py2exe  
        setup(windows=[{"script": "main.py"}])
   
    2.在windows 命令行执行下面的命令:
            python convert.py py2exe
    
        会生成一个dist目录,里面是已经转换好的exe文件和各种库文件, 大概有16MB。
    3.如果提示“找不到MSVCP90.dll”,这是因为wxWidget使用这些动态库:
       Microsoft.VC90.CRT.manifest,msvcm90.dll,msvcp90.dll。
       在vs2008的目录Microsoft Visual Studio 9.0\VC\redist\x86中。
       或者下载Microsoft Visual C++ 2008 Redistributable Package(http://www.microsoft.com/zh-cn/download/details.aspx?id=29),安装
       后在C:\WINDOWS\WinSxS\x86_Microsoft.VC90...中找到这些文件。
       也可以在program file目录中搜索这个文件,很多软件都自带了这些文件。
       单独下载MSVCP90.DLL 并拷贝到Python27/DLLs 目录下
            http://www.dll-files.com/dllindex/dll-files.shtml?msvcp90
       或者使用下面的脚本忽略这个dll文件。
       
       from distutils.core import setup  
        import py2exe  
        setup(windows=[{"script": "main.py"}], options = { "py2exe": { "dll_excludes": ["MSVCP90.dll"] } )

    新版本已经可以打包为一个文件了,以前都是一堆dll,pyd的。具体的变化其实只有一个地方。就是options里增加bundle_files项,值为 1表示pyd和dll文件会被打包到exe文件中,且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到exe文件中,但是 可以从文件系统中加载python模块。另外setup中使用zipfile=None可以不生成library.zip。
        from distutils.core import setup  
        import py2exe

        includes = ["encodings", "encodings.*"]
         
        options = {"py2exe":            
            {"compressed": 1,
             "optimize": 2,  
             "ascii": 1,  
             "includes":includes,  
             "bundle_files": 1 ,
             "dll_excludes": ["MSVCP90.dll"] }  
        }
          
        setup(windows=[{"script": "main.py"}],
              options = options,       
              zipfile=None
              )
       使用上面的脚本,在dist目录下只有2个文件: w9xpopen.exe 和 一个可执行文件。大概6.5MB。
       
     4. 运行程序里弹出dos窗口的问题,可以把py后缀改为pyw就行了。如果要是编译的话记住一定要用setup(windows = ['foo.py'])要是用setup(console=['foo.py'] )的话,还是会弹出窗口的。

参考:
Python 与 wxPython 均自带有API文档,在开始菜单中可以找到
《简明 Python 教程》http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/
《wxPython In Action》http://wiki.woodpecker.org.cn/moin/WxPythonInAction
.http://laochake.iteye.com/blog/438667
.http://blog.sina.cn/dpool/blog/ArtRead.php?nid=87aa09da0100wffq
.wxPython In Action电子书:https://code.google.com/p/pythontetris/
.http://blog.csdn.net/ablo_zhou/article/details/5295750
.py2exe使用方法: http://justcoding.iteye.com/blog/900993