为什么用Python开发桌面应用程序

为什么用Python开发桌面应用程序

1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植。
2)Python的面向对象脚本语言编程适合快速界面开发
3)Python在服务器端和客户端都非常有前途,可以形成一个统一的解决方案,这一点明显比Java有优势
4)Python桌面应用程序可以完全编译为本地代码,脱离Python运行环境,这一点比dotnetwinforms都有优势
5)Python可以不受限制的任意调用Windows32 API,所以凡是VC6可以做的事情,Python就可以做

试想一下,现在我们开发桌面应用程序有什么要求?
一、不要附带一个JRE或者CLR的累赘
二、可以快速开发
三、性能要有保证
四、方便的远程方法调用支持
此外如果能够跨平台就最好了

Java前三点都不符合;dotnetwinforms不符合一;VC6不符合二和四,VB6不符合三和四;Delphi7符合前四点;FlashRIA不符合三;Python全部都符合!并且请记住Python是一个完全开源免费的方案!

使用 python开发 windows应用程序 本人以前一直用的是C++,MFC,毕业到了公司以后,公司用 python做流程,我顺便最近研究了一下用 python 开发 windows 应用程序的整个流程,大体如下:

一、开发前期准备1.boa-constructor-0.6.1.bin.setup.exe #一个 wxWidges 的集成开发环境,简单如Delphi,可以直接拖拽控件,并且和其他集成环境不一样, #它不与集 成开发环境的 MainLoop 冲突,用pythonwin,pyScripter 都会冲突,典型 报错就是运行第二次 #程序的时候,直接导致 集成开发环境的强制退出,因为 MainLoop冲突了 2.wxPython2.8-win32-unicode-2.8.10.1-py26.exe #wxPython 库, 提供了用C++写 的 windows 组件库 wx 3.py2exe-0.6.9.win32-py2.6.exe #打包发布工具,将python 写的windows 程序或控 制台程序直接打包成 exe 可执行文件,供用户使用 上述三个软件都是基于 python2.6的,软件版本一定要配套,因为他们默认的安 装路径和 python版本有关系,否则会找不到相关库的存在。

二、开发 软件安装完以后,打开BOA,哇塞,拖控件真简单,而且属性啥的和 Dephi 差 不多,你只要改改属性,代码会自动生成,它生成的控件很漂亮,记得以前用C++6.0 开发软件的时候,那个控件真丑,都需要我重新用控件库去绑定优化,现在不用了~BOA生成的控件,视觉效果相当好~开发软件速度相当快,再也不用为了软件界面而写太多代码,也不用为了生成一个小程序而生成了很多的文件,python开发的程序,没有多余的文件,而且文件很小。

三、发布很多人都想在自己的软件程序写好以后,发布给其他人使用,一方面不希望自己的代码泄露,一方面以此显出一点成就感, 呵呵,可以使用 py2exe 将你的 windows 程序打包发布了!当然,首先你得写个如下的setup.py 文件: 代码 1 from distutils.core import setup 2 import py2exe3 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", 13description = "windows program", 14 name = "winsetup", 15 options =options, 16 zipfile=None, 17 windows=[{"script": "myscript.py","icon_resources": [(1, "PyCrust.ico")] }], 18 ) 你可以在命令行下运行:pythonsetup.py py2exe,那么你就会发现你的应用程序出 现在 dist文件夹里了,恭喜你,完成了 windows 应用程序的开发!

python  学习—初次接触 (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 studio.net 的 IDE,不过也有 BoaConstructor 和 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:boa-constructor-0.6.1.bin.setup.exe。 (下载地址参见参考资料) 按顺序依次安装:python2.6.2-> wxPython2.8 -> Boa Constructor.※不过之后因为要使用 py2exe 打包的原因,把版本下降成了 2.5 系列。

入门安装好之后,就可以直接使用了。python 自带了一个名字叫 IDLE的开发环境, 不写GUI 程序的话,还是很好用的。打开工具,写一句 print "helloworld",敲回车,马上就可以看到效果了,呵呵,似乎入门很容易。 从网上下载了一份 ppt格式的教程,简单的了解一下基本语法,然后按照教程中的示例代码练习了一下,就算入门了。相比 java 和.net的庞大类库,python算是蛮简单的,而且本身是动态语言,所以非常的灵活。动态语言是未来的趋势,多 练习点只有好处。 GUI GUI GUI GUI 虽然IDLE 基本上可以满足简单的程序,但我的主要目的还是要做 GUI 程序,所 以上手 Boa 是必不可少的。打开 Boa之后一看,界面确实有点简单, 不过 GUI程序的必备工具(工具栏,属性查看器,编辑器)一应俱全,所以也没有什么特别的。只不过有一点不爽,就是这三个东东并不是像平时使用的 IDE那 样集成在 一个窗口中的,而是分属于三个不同的窗口,在使用"Alt +Tab"键切换的时候,一次只能切换一个窗口,很不爽,不知道是从哪里参照的用户习惯。 参考这篇文章(Boa constructor 简介)中的介绍,写了一个只有一个 button 的界 面出来。 简单的步骤如下:

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

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

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

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

5. 在这个单击事件的函数的 event.skip()前面,增加如下代码 (弹出一个确认窗口) dlg =wx.MessageDialog(self, u'yes', u'You got it~', wx.OK |wx.ICON_INFORMATION ) dlg.ShowModal() dlg.Destroy()

6. 保存以上代码, 然后按F9 运行, 就可以看到一个带 button 的窗口, 点击 button 又会弹出一个 confirm 窗口。OK,至此程序创造成功。

打包 了解了一下,发现有 python的打包程序至少有十几个之多,其中出名的有 py2exe,pyinstaller,pypackage。本次学习选 用了py2exe。下载了 py2exe-0.6.9.win32-py2.6.exe,安装上简单试用了一下。

首先,先在之前用 Boa创建的目录下新建了一个 mypy.py 文件,里面内容为: from distutils.core import setupimport py2exe setup(windows=["App1.py"])

然后执行命令:python mypy.pypy2exe,出现错误。 错误信息如下: error: MSVCP90.dll : No such file or directory查看网友的文章,可以肯定是这一个版本的问题,虽然也有解决的方法,但是并不太好,所以最终选择了直接安装低版本,版本低就相对要稳定的多嘛。于是乎,python-2.5.4.msi,wxPython2.8-win32-unicode-2.8.10.1-py25.exe, py2exe-0.6.9.win32-py2.5.exe 全部 down了下来,并且把之前的版本都替换了。再次试用 py2exe 打包,终于成功的获得了一个 App1.exe 和一堆相关的文件,总文件大小约14M 多,虽然也是很大,不过比起带 JRE 的程序来讲,还是小的多了,可以忍受。然后把程序拷贝到其他机器上运行,又出错了。错误信息是找不到 gdiplus.dll文件。神了,这种事情都发生。到机器上搜索了一下,这个文件在很多软件的安装目 录下都有,在 wxpython的目录下也有的。就是不知道为什么 py2exe 就是没 有 导出来,无语,看来这个版本也不是完美的。忍了,把 guiplus.dll直接拷贝到打包出来的目录下,然后在其他机器上运行,终于 OK 了,看来以后这 一步手动操作是避免不了的了。这次就算完整的走了一圈了。可是怎么看那个 exe 程序的 windows窗口外形的图标都感觉特别不爽。于是到自己的硬盘上找了一个好看的图标放到程序的目 录 下,然后修改 mypy.py 的内容如下:from distutils.core import setup import py2exesetup(windows=[{"script":"App1.py","icon_resources":[(1,"A0052345.ico")]}])执行命令 pythonmypy.py py2exe,OK,exe 文件的图标被成功地替换了。 呵呵,这个最简单的 GUI 程序就算出炉了。

总结经过 这么一次折腾,终于对 python 以及 python相关的工具有了一些了解。总的来说,python是一种面向对象的解释性编程语言,近似于伪代码的语法,还 是非常易于学习的。而且作为一种黏合剂语言,它的用途也是非常的广 泛。不 过在IDE 方面还稍微有点弱,即便是几个商业版本的 IDE,也不是特别让开发者满意。不过我现在的目的就是可以拿来做一些小的带有界面的工具而已,也不需要太强大的IDE,暂时还是可以满足的。以后要找机会尝试一些 eclipse + pydev。毕竟, 以 eclipse 的强大,相信这个 IDE很有希望成为开源的 pythonIDE中的老大哥。

参考资料:

1. Python_百度百科:http://baike.baidu.com/view/21087.htm

2. python: www.python.org

3.wxpython: www.wxpython.org

4. Boa Constructor:http://sourceforge.net/projects/boa-constructor/

5. 啄木鸟 Pythonic开源社区: http://www.woodpecker.org.cn/

6. Boa constructor 简介:http://blog.163.com/caodixy/blog/static /50940488200951031431510/

7. Python应用发布技术:http://wiki.woodpecker.org.cn/moin/PyExe

Python桌面应用程序开发的心得体会

引言

随着互联网技术的发展和智能终端设备的普及,软件应用逐渐从桌面程序向移动网络化迁移。虽然如此,一些工程应用的软件还是倾向于独立的桌面应用程序的形式。在这里,我将曾经曾经桌面开发的一些心得整理出来,与大家分享。希望能对专业人员有所借鉴,从中找到不一样的开发思路;对于初学者有所帮助,节约一些时间和精力。为什么这么说呢?我的专业是化学工程的一个分支——过程系统工程,在研究生阶段做项目开发过一些软件,走过一些弯路,也有一些收获。在学校最先学习的是用VisualStudio开发C程序,后来做流程仿真的项目,自学了C++,摸索使用MFC类库开发界面。这个项目开发得很辛苦,其中很多时候都在熬夜修改。一方面由于开发经验不足,另外一方面由于需求不明确,但是当时年轻精力充沛,印象中开发软件就是不停地改啊改。最终虽然完成了项目,但是对于开发过程很不满意。俗话说“穷则思变,变则通”。后来学习了Python语言,并摸索着用这个语言来做项目开发软件,有了之前的经验教训,后来的项目开发顺利了很多。总得来说,语言和工具的优势对于软件开发,尤其是人员很少的项目来说,还是很有帮助的。因此,将使用Python语言开发桌面应用过程中逐渐摸索得到的心得体会总结在这里与大家分享。

成长历程

从学校的教育之下,最先学会的就是使用微软的开发工具。

开发环境是Visualstudio,主要类库是MFC。

后来自学Python语言,并用它用来开发桌面应用。

开发环境为是Eclipse + PyDev

主要用到的模块及工具组合为Python + SciPy + NumPy + wxPython + SWIG + MinGW+py2exe + I18N + NSIS + Subversion

文档方面Epydoc + reStructureText +Sphinx

测试方面doctest

下面进行详细说明:

用SciPy,NumPy进行数值计算方面的开发。

用wxPython进行界面方面的开发。

用SWIG包装已有的C代码作为动态链接库。

用MinGW提供的工具链来完成C代码的编译。

用py2exe将Python代码打包成独立的可执行二进制程序。

用I18N进行翻译满足不同的界面字符串变更需求。

用NSIS自动将程序打包为安装程序。

用Subversion进行版本控制,随时随地进行代码修改或者回滚到之前的功能。

用Epydoc生成模块的文档,用reST标记语言来写帮助文档,用Sphinx来组织文档。测试方面使用doctest模块。我们都知道文档和测试方面的工作非常重要,但是在实际项目开发中这些方面的投入会比代码开发少一些。在开发人员有限,有的时候可能就只有1名研究生在做开发,此时遇到导师和用户不断催促着要拿出软件的时候,这方面的时间精力的投入就更没法保障。

需要指出,这里选择的模块都有替代。比如wxPython是一个优秀的跨平台的GUI框架,是wxWidget的Python绑定。GUI框架很多,其中同样优秀的还有Qt的Python绑定,pyQt以及pySide。wxWidget和Qt都是优秀的开发库,选择wxWidegt,还是Qt更多的出自个人爱好。比如我就不喜欢程序代码中有太多的大写字母,而Qt的类库中使用的大写字母比wxWidget多,因此我选择wxPython。虽然如此,但是客观的说,Qt的开发文档更丰富。

同样版本控制软件也有很多,比如CVS,Mercurial,Git等等。

二进制打包程序有很多,比如与py2exe类似的PyInstaller,cx_Freeze等,也可以使用Pyrex,shedskin先将Python代码翻译为C/C++代码,然后再编译为可执行的二进制文件。

看到这里你应该已经能推测到本文覆盖的内容了,如果你还是比较感兴趣,那么欢迎继续阅读,如果涉及的内容,你都比较熟悉,那么大可不必再在这篇文章上花费时间啦。

被Python震撼

最近正在研究FlashRIA,经人推荐到sf上面下载了一个开源免费的ASIDE,叫做SEPY,不经意之间发现SEPY竟然是用Python写的!于是又下载了SEPY的源代码观摩了一下,结果更吃惊,惊叹Python做图形桌面应用程序代码竟然如此简洁,表现力竟然如此丰富,如果不是特别留意,绝想不到SEPY竟然不是Windows本地代码编写的软件。就此关注了一下Python的桌面应用程序开发,这一下更加吃惊,发现现在使用python写的桌面应用程序已经非常丰富了,sf上面一抓一大把。然后还找到了Python的几个IDE,其中BOA给我极大的震撼,安装跑起来一看,俨然就是Delphi!可视化的托拽方式放置桌面控件,完全面向对象的编程。

经过半天时间简单的了解,我得到了如下的结论:Python做桌面应用程序的前景非常好,而相形之下,已经事实上宣判了Java做桌面应用程序的死刑!

Java 做桌面应用程序,无法脱离JRE,这是一个很大的限制,你必须下载安装很大的一个JRE运行环境,并且一旦安装那就涉及到了JRE版本的问题,你基于JDK5.0开发的应用就没有办法在人家JRE1.4上面正常的跑。虽然JWS可以做到应用程序的Onlineupdate,但是终究无法做到JRE的online update!

此外,Java的图形API严重分裂为Swing和SWT。Swing是一个扶不起的阿斗,bug很多,做出来的界面不伦不类,而且无法处理一些类似系统托盘之类和操作系统关系比较大的功能,并且性能非常糟糕,可以这样说,Java成也Sun,败也Sun;SWT要比Swing好得多了,但是可惜的是,Sun拒绝接受SWT,这样就使得SWT始终处在地下状态,得不到良好的发展。并且SWT也无法脱离JRE运行,而且API直接封装操作系统调用,很多地方有MFC痕迹,没有办法OO起来,受到很大的限制,但不管怎么说,SWT总算是给Java图形编程留下了一线希望。

而Python从一开始就是走SWT的思路,绝不愚蠢的自己去 构建桌面组件,而是用C++编写组件,用Python去调用,这样的思路走到现在,已经有了良好的回报。现在Python编写的应用软件,可以脱离Pthon运行环境,单独编译为pyd(PythonDLL)和exe直接运行在Windows操作系统上。其速度表现和内存占用两个方面都要比Java好,就我现在的用下来的感觉,和VB开发的桌面应用程序,或者和dotnet开发的桌面应用程序处在同一个级别。

其实现在Windows桌面应用程序开发处在一个告别旧的时代,但是又没有迎来新的时代的尴尬时期:MS力主推出的dotnetwinforms并没有取得预期中的成功,至今仍然使用者寥寥,推了那么多年都没有普及开来,并且又是注定的一个过渡时期技术,这些都说明winforms不会有更好的前途;而MS下一代桌面应用技术尚未拉开神秘的面纱,至于普及,也是n年以后的事情了;所以现在就很尴尬,经过几年Internet Application和dotnet winforms的喧嚣之后,传统的DesktopDeveloper又重拾昔日的Delphi利器,然而连Borl and自己都不再对自己保存足够的信心,而去搞Delphi.net去了,于是大家只好拿出来怀旧的Delphi7,VB6,VC6来应付桌面应用技术开发。

在有像BOA这样IDE的强力支持下,Python也当仁不让的加入了这一行列,以现在的桌面应用开发技术来说,Python在开发效率,执行性能,学习曲线方面全面不落下风,甚至在很多方面有优势,特别是在跨平台这一点上,做到了Java多年都做不好的方面。由于Python的出色表现,我已经找不出来用Java编写桌面应用程序的任何理由了。我可以理直气壮的宣布,Java桌面应用开发已死!

Python在 服务器应用开发方面,也同样非常强大,不过考虑到Java在服务器领域多年的成绩和诸多大公司的投入,显然还无法取代Java的地位,但是我可以预言,将来淘汰Java的必定是Python,而不是dotnet!

随着RIA和RCP的流行,大家都在寻找下一代客户端技术。MS自成体系的一套自然也是其中之一,但是离问世还有几年,离普及就更遥远,在当前出现的所有的技术当中,我断定两种技术肯定会成为主流:

Flash会成为RIA的主流;Python会成为RCP的主流!

为什么用Python开发桌面应用程序相关推荐

  1. python开发桌面应用程序图标不见了_PySide GUI中的应用程序图标

    我有一个PySide GUI应用程序(用Python 3编写,在Windows 7 Pro上运行),在这个程序中,我按如下方式设置应用程序图标:class MyGui(QtGui.QWidget): ...

  2. Python+WebKit+HTML开发桌面应用程序

    Python+WebKit+HTML开发桌面应用程序 前言 几天前写了一个备份的小工具,用Python写个脚本,也就花个一天的时间搞定,给客户用了一下,对功能很满意,但对界面不满足,想要一个图形界面来 ...

  3. php开发桌面应用程序_使用PHP开发跨平台桌面应用程序的3种方法

    php开发桌面应用程序 PHP as a cross-platform desktop app development language? Blasphemy! Nonetheless, it's p ...

  4. flask开发桌面应用程序_使用Microsoft Authenticatio将多个破折号应用程序嵌入Flask中...

    flask开发桌面应用程序 Full disclosure: I am not an expert in developing web applications. I don't even consi ...

  5. Python 开发桌面应用竟然如此简单

    这是「进击的Coder」的第 496 篇技术分享 作者:星安果 来源:AirPython " 阅读本文大概需要 7 分钟. " 1. 前言 我们都知道 Python 可以用来开发桌 ...

  6. python开发微信小程序-Python 开发者的微信小程序开发实践

    导读 在知乎上,有人提问"如何使用 Python 开发微信小程序". 其实微信小程序作为一个前端的机制,Python 并不能插上边.只不过可以作为后端接口为微信小程序提供数据服务而 ...

  7. 使用python开发windows应用程序

    本人以前一直用的是C++,MFC,毕业到了公司以后,公司用python做流程,我顺便最近研究了一下用python开发windows应用程序的整个流程,大体如下: 一.开发前期准备 1.boa-cons ...

  8. 教你一键开发桌面应用程序

    前言 因为公司项目关系,要开发一款桌面应用程序.说到桌面应用程序,有很多种解决方案,最终我们选了Electron,备受前端开发喜爱的VS Code正是Electron开发的,今天我们就来聊聊这个Ele ...

  9. 免费直播!用Python开发人脸识别程序,零基础也能学(附源码)

    在当今社会人脸识别技术应用的范围越来越广泛,全球很多商业活动都已经从中获益:人脸自动对焦和笑脸快门技术,人脸识别门禁,人脸识别支付等许多方面. 人脸识别技术的使用在接下来的几年内还会继续增长,还没掌握 ...

最新文章

  1. linux定时执行python脚本_linux定时执行python脚本的方法以及失败不执行的处理方法...
  2. java new关键字
  3. getline()函数
  4. MAX31855 热电偶至数字输出转换器
  5. 手机的余存电量还有多少的时候适合充电?
  6. 25 矩阵——QR分解、Householder 矩阵、镜面反射
  7. Matlab里DTW算法和图像
  8. 在系统编程ISP及在应用编程IAP
  9. AutoJs 4.1.1 实战教程
  10. python实战演练三:抓取我自己csdm博客信息的标题和文章链接,并存入文件夹《只抓取了一页数据,如何抓取全部数据》
  11. MQL5 编程基础:数组
  12. 小白速点,计算机的存储规则你知道多少
  13. 网口压线顺序_水晶头网线排序方法 网线安装必看【图文教程】
  14. 郑强上任后,太原理工大学不断引援!
  15. PHOTOSHOP绘制卡通人物简单教程
  16. 圣邦微电子2023校招笔试
  17. 头脑王者服务器维护,头脑王者服务器
  18. 尚驰SHANGCHI汽车美容店尚驰洗车店兰州洗美行业中国的工匠力量
  19. kali升级操作系统
  20. 条形码控件字体的工具包Code 39 Font Advantage Package

热门文章

  1. windowsSP2 下 用 FINDPASS 截取密码
  2. JAVA实现学生和老师同页面登录
  3. 关于邮件列表一个问题的解释
  4. 北京理工大学计算机系博导,北京理工大学信息与电子学院博导介绍:罗森林
  5. [uwp]ImageSource和byte[]相互转换
  6. 集成EasySwoole+LayuiAdmin PHP 框架
  7. SQLAlchemy Column对象中的default与server_default区别
  8. Nginx配置使用详解
  9. sharesdk微信分享
  10. 会自动分配IP地址的路由协议——DHCP