2024年1月15日发(作者:)

使用 python 开发 windows 应用程序

本人以前一直用的是C++,MFC,毕业到了公司以后,公司用python做流程,我

顺便最近研究了一下用python开发 windows 应用程序的整个流程,大体如下:

一、开发前期准备

#一个wxWidges 的集成开发环境,简单如

Delphi,可以直接拖拽控件,并且和其他集成环境不一样,

#它不与集成开发环境的MainLoop冲突,用pythonwin,pyScripter都会冲突,典型

报错就是运行第二次

#程序的时候,直接导致

集成开发环境的强制退出,因为MainLoop冲突了

#wxPython库,提供了用C++写的

windows 组件库wx

#打包发布工具,将python写的windows 程序或控

制台程序直接打包成exe 可执行文件,供用户使用

上述三个软件都是基于python2.6的,软件版本一定要配套,因为他们默认的安

装路径和python版本有关系,否则会找不到相关库的存在。

二、开发

软件安装完以后,打开BOA,哇塞,拖控件真简单,而且属性啥的和Dephi差

不多,你只要改改属性,代码会自动生成,它生成的控件很漂亮,记得以前用

C++6.0开发软件的时候,那个控件真丑,都需要我重新用控件库去绑定优化,

现在不用了~BOA生成的控件,视觉效果相当好~开发软件速度相当快,再也

不用为了软件界面而写太多代码,也不用为了生成一个小程序而生成了很多的

文件,python开发的程序,没有多余的文件,而且文件很小。

三、发布

很多人都想在自己的软件程序写好以后,发布给其他人使用,一方面不希望自

己的代码泄露,一方面以此显出一点成就感,呵呵,可以使用py2exe将你的 windows

程序打包发布了!当然,首先你得写个如下的文件:

代码

1 from import setup

2 import py2exe

3 includes = ["encodings", "encodings.*"]

4 options = {"py2exe":

5 { "compressed": 1,

6 "optimize": 2,

7 "includes": includes,

8 "bundle_files": 1

9 }

10 }

11 setup(

12 version = "0.1.0",

13 description = "windows program",

14 name = "winsetup",

15 options = options,

16 zipfile=None,

17 windows=[{"script": "", "icon_resources": [(1,

"")] }],

18 )

你可以在命令行下运行: python py2exe,那么你就会发现你的应用程序出

现在dist文件夹里了,恭喜你,完成了windows 应用程序的开发!

python python python python 学习 学习 学习 学习—— —— —— ——初次接触 初次接触 初次接触 初次接触

(python,wxpython,Boa,py2exe) (python,wxpython,Boa,py2exe)

(python,wxpython,Boa,py2exe) (python,wxpython,Boa,py2exe) 收藏 收藏 收藏 收藏

前言 前言 前言 前言 长期使用java 做web开发,有时候需要做一些小工具的话,优先考虑的一般是

写ant或bat等脚本,因为开发较快,并且很容易集成到IDE中。 不过有时候一

些桌面程序级别的工具也是需要的,比如说写一些文档生成相关的工具等。

这个时候采用java 是不太合算的,因为开发效率不高(虽然有netbeans,eclipse

上也有swt designer),性能也有一点影响,而且还必须要有JRE的支持。采用.net

框架倒是开发效率挺高,而且性能也不错,但是IDE价格较高,程序无法 移植

到其他平台,并且也需要有CLR 的支持。

没招,就只有找找看其他的编程语言了。

在网上搜索了一下,发现Python可能是一个很好的替代品:面向对象的脚本语

言,稍微修改一下就可以实现跨平台,有wxPython这种GUI插 件的支持,使用

py2exe 等打包工具打包之后的文件大小也远小于同样功能的java 程序,经过某些

类似于psyco工具的处理之后,性能也还不错。缺点 也有,就是没有一个可以

媲美visual 的IDE,不过也有Boa Constructor和eclipse 插件pydev这样

的工具,应该可以忍受了。

而且python作为google 的官方编程语言之一,现在在编程语言排行榜上排名前

10,那么就肯定是优点胜过缺点的。那么就先简单地试用一下总 是可以的吧。

断断续续的用了几天时间来了解相关的工具,语法,终于写出了一个最简单的

GUI程序,并且打成了一个程序包,拷贝到到其他PC 上运行成功。虽然中间 遇

到一些问题,但也学习了很多,所以先写blog记下来。能帮到其他人就更好了。

工具准备 工具准备 工具准备 工具准备

python现在的最新版是3.1.1,而且3.0之后的版本的语法与之前的版本相比已经

有了一定的变更,但是相关的wxpython等还没有支持 到这么高的版本,为了能

够使用wxpython来编写GUI程序,只能放弃新版本了。所以选择了2.x系列中的

最新版:2.6.2,同样wxPython 也选择了for2.6的版本

wxPython2.8-win32-unicode-2.8.10.1-py26。然后下载最新的Boa Constructor:

。(下载地址参见参考资料)

按顺序依次安装:python2.6.2 -> wxPython2.8 -> Boa Constructor.

※不过之后因为要使用py2exe 打包的原因,把版本下降成了2.5系列。

入门 入门 入门 入门 安装好之后,就可以直接使用了。python自带了一个名字叫IDLE的开发环境,

不写GUI程序的话,还是很好用的。打开工具,写一句print "hello world",敲回

车,马上就可以看到效果了,呵呵,似乎入门很容易。

从网上下载了一份ppt格式的教程,简单的了解一下基本语法,然后按照教程中

的示例代码练习了一下,就算入门了。相比java 和.net的庞大类 库,python算是

蛮简单的,而且本身是动态语言,所以非常的灵活。动态语言是未来的趋势,多

练习点只有好处。

GUI GUI GUI GUI

虽然IDLE基本上可以满足简单的程序,但我的主要目的还是要做GUI程序,所

以上手Boa 是必不可少的。打开Boa 之后一看,界面确实有点简单, 不过GUI

程序的必备工具(工具栏,属性查看器,编辑器)一应俱全,所以也没有什么特别

的。只不过有一点不爽,就是这三个东东并不是像平时使用的IDE那 样集成在

一个窗口中的,而是分属于三个不同的窗口,在使用"Alt + Tab"键切换的时候,

一次只能切换一个窗口,很不爽,不知道是从哪里参照的用户习惯。

参考这篇文章(Boa constructor简介 )中的介绍,写了一个只有一个button的界

面出来。

简单的步骤如下:

1. 先创建一个,同时会自动创建一个

2. 通过Editor中的Frame Designer往Frame 中添加了一个

3. 跟2类似的步骤往中添加了一个button

4. 在Inspector窗口中,给button增加一个单击事件

5. 在这个单击事件的函数的()前面,增加如下代码 (弹出一个确认窗口)

dlg = eDialog(self, u'yes',

u'You got it~',

| _INFORMATION

)

dal()

y() 6. 保存以上代码,然后按F9运行,就可以看到一个带button的窗口,点击button

又会弹出一个confirm 窗口。

OK,至此程序创造成功。

打包 打包 打包 打包

了解了一下,发现有python的打包程序至少有十几个之多,其中出名的有

py2exe,pyinstaller,pypackage。本次学习选 用了py2exe。

下载了,安装上简单试用了一下。

首先,先在之前用Boa创建的目录下新建了一个文件,里面内容为:

from import setup

import py2exe

setup(windows=[""])

然后执行命令:python py2exe,出现错误。

错误信息如下:

error: : No such file or directory

查看网友的文章,可以肯定是这一个版本的问题,虽然也有解决的方法,但是并

不太好,所以最终选择了直接安装低版本,版本低就相对要稳定的多嘛。

于是乎,,wxPython2.8-win32-unicode-2.8.10.1- ,

全部down了下来,并且把之前的版本都替换了。

再次试用py2exe 打包,终于成功的获得了一个 和一堆相关的文件,总

文件大小约14M多,虽然也是很大,不过比起带JRE的程序 来讲,还是小的多

了,可以忍受。

然后把程序拷贝到其他机器上运行,又出错了。

错误信息是找不到文件。

神 了,这种事情都发生。到机器上搜索了一下,这个文件在很多软件的安装目

录下都有 ,在wxpython的目录下也有的 。就是不知道为什么py2exe就是没 有

导出来,无语,看来这个版本也不是完美的。忍了,把直接拷贝到打包出来的目录下,然后在其他机器上运行,终于OK了,看来以后这 一步

手动操作是避免不了的了。

这次 就算完整的走了一圈了。可是怎么看那个exe程序的windows窗口外形

的图标都感觉特别不爽。于是到自己的硬盘上找了一个好看的图标放到程序的目

录 下,然后修改的内容如下:

from import setup

import py2exe

setup(windows=[{"script":"","icon_resources":[(1,"")]}])

执行命令python py2exe,OK,exe 文件的图标被成功地替换了。

呵呵,这个最简单的GUI程序就算出炉了。

总结 总结 总结 总结

经过 这么一次折腾,终于对python以及python相关的工具有了一些了解。

总的来说,python是一种面向对象的解释性编程语言,近似于伪代码的语法,还

是非常易于学习的。而且作为一种黏合剂语言,它的用途也是非常的广 泛。不

过在IDE方面还稍微有点弱,即便是几个商业版本的IDE,也不是特别让开发者

满意。

不过我现在的目的就是可以拿来做一些小的带有界面的工具而已,也不需要太强

大的IDE,暂时还是可以满足的。以后要找机会尝试一些eclipse + pydev。毕竟,

以eclipse 的强大,相信这个IDE很有希望成为开源的python IDE中的老大哥。

参考资料 参考资料 参考资料 参考资料: :: :

1. Python_百度百科: /view/

2. python:

3. wxpython:

4. Boa Constructor: /projects/boa-constructor/

5. 啄木鸟 Pythonic 开源社区: / 6. Boa constructor简介:/caodixy/blog/static

/51031431510/

7. Python 应用发布技术:/moin/PyExe