下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

用Python开发桌面应用程序的原因

作者:课课家教育     来源: http://www.kokojia.com点击数:1293发布时间: 2019-03-10 09:03:20

标签: 桌面软件桌面开发Python原因介绍

  wxPython是一个优秀的跨平台的GUI框架,是wxWidget的Python绑定。GUI框架很多,其中同样优秀的还有Qt的Python绑定,pyQt以及pySide。wxWidget和Qt都是优秀的开发库,选择wxWidegt,还是Qt更多的出自个人爱好。比如我就不喜欢程序代码中有太多的大写字母,而Qt的类库中使用的大写字母比wxWidget多,因此我选择wxPython。

  最近正在研究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的onlineupdate!

  此外,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年以后的事情了;所以现在就很尴尬,经过几年InternetApplication和dotnetwinforms的喧嚣之后,传统的DesktopDeveloper又重拾昔日的Delphi利器,然而连Borland自己都不再对自己保存足够的信心,而去搞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的主流!

  选择学习“下一个”程序语言

  2009-08-0709:04:13次阅读条评论

  为什么用Python开发桌面应用程序感谢GooCarlos的投递

  今天这篇文章筛选出一些主流编程语言,对语言特性与环境稍作介绍,希望可以帮助到一些编程初学者与有兴趣学习编程的朋友,供大家了解与选择,少走弯路。Java、C++、C#、Python、php……当然,这些仅是我推荐的。我还将介绍其他主流语言与适于初学者学习的编程语言与一些编程学习指导。

  Java,面向对象、安全、跨平台、强大稳健、流行的程序设计语言与环境。由Sun公司开发,目前由JavaCommunityProcess控制。近些年来非常流行且稳定,未来生命周期较长。语言风格较为接近C++与C#,而最为人熟知的便是跨平台性。Java的跨平台性已得到了广泛的认可,在计算机的各种平台、操作系统,以及手机、移动设备、智能卡、消费家电…均已迈入成熟的生产化。而国内的Java人才需求前景目前也是大好。

  Java的官方网站是http://java.sun.com/。Java分为JavaSE(标准版,面向初学者与桌面开发)、JavaEE(企业版,也称J2EE,面向企业级开发、网络开发,包括了为人熟知的JSP,并包含了JavaSE的所有内容)、JavaME(微型版,为手机、PDF、机顶盒、消费家电等嵌入设备开发),目前还有正在发展的JavaFX(一种富Internet应用程序开发的脚本语言)。Java的运行环境是JRE,开发环境是JDK,均可以在其官方站点下载。开发平台的构建较为简单,开发者下载并安装JDK即可,目前JDK最新版本是1.6.15。

  最重要的——它们都是免费、开源的。而Java不需要指定集成开发环境(IDE)——JDK和记事本足以完成。不过在此我推荐使用Notepad++或UltraEdit作为代码文本编辑器;Eclipse与NetBeans这两款免费而又强大成熟的Java集成开发环境(IDE)。

  最近也在进一步学习中开始写Java的编程书籍,在此透露一下,它是一本内容全面、语言生动、较快入门、注重实例、分享经验、提供编程思维与设计模式的Java编程书。这方面我需要一段时间的努力后,才能与您见面。不过最重要的,这本书将是免费的。在保证专业性与内容质量的同时,这本书将提供免费的阅读与下载。

  C++,应用最广泛、成熟、强大、复杂、流行的程序设计语言。你目前正在使用的Windows或Linux操作系统的大部分内容均出自C++的程序员之手,C++非常强大——近乎无所不能,而C++代码经过编译后将成为计算机的二进制代码的可执行程序,所以在兼容性、性能上均为优秀。当今如果你学习C++,再配合WIN32SDK、MFC或是.NETCLR,绝对是开发桌面程序的首选语言。从名字可以看出,C++改进自C语言,特别是面向对象方面的扩展,但学习C++可以直接学习,不需要且不建议先学习C语言基础,可以把C++当作一门全新的编程语言。

  如在Windows平台下,C++首选的集成开发环境(IDE)自然是VisualC++,它包含在MicrosoftVisualStudio之中,最新版本是2008。你可以选择微软官方提供的VisualStudio2008专业版——这是最好的选择!微软提供90天的试用版,安装镜像较为庞大,与正式版没有区别,同时包含了MSDNLibrary(最权威的开发文档),唯独只是授权序号的区别。下载安装后即可使用。当然,你也可以进行简单的操作将其变为正式版。不过在此不是鼓励大家使用盗版软件,如在非商用的情况下,这种手段是可行的,也会加快你的学习进度与质量。此外微软也提供了VisualStudio2008速成版,又称为学生版,它是免费的,如仅是学习完全足够。

  除了微软的IDE,你还有其他的选择。在Windows下搭建Eclipse+CDT+MinGW,Linux和Unix下可以使用Eclipse+GCC++,这些都是开源、免费的。或是更基本的……你主需要一个记事本与C++编译器,当然我不推荐这样做。

  C#,读作“CSharp”。微软的C#就好似是C++、Java、Delphi与VisualBasic的结合体,是新兴、易学、强大的程序设计语言,它更像Java——完全面向对象,开发与运行都在.NETFramework环境中。使用微软强大的VisualStudio集成开发环境,这是快速开发Windows平台桌面应用程序的最好选择。听起来有点像VB?不过C#比VB可强大多了。不过C#编译后的程序如Java一样是中间语言,运行程序的计算机需要安装.NETFramework运行环境,不算大也不算小。但在微软的.NET推出多年后的今天,它还没有较好的普及开,可能对你的程序传播会有一定影响。同时C#也可以开发ASP.NET的动态网页程序,这是曾经风火多年的ASP的替代产品。

  开发C#程序,使用微软的VisualStudio是最好的,也是几乎唯一的选择。同VisualC++的环境搭建基本雷同,在此不再复述。目前.NET环境已经发展到3.5,C#已经发展到C#4.0,学习C#请选择一本实时性、专业性、全面性的好教程。微软的VisualStudio2010近期也将发布,届时将搭载更为强大的C#语言与集成开发环境(IDE)。

  Python,新兴的面向对象脚本语言。说其“新”其实并不是如此,Python已经具有十多年的历史,且已有非常多的开发者与使用者,最著名的就属NASA(美国国家航空航天局)。其语言特点是语法清晰简洁,便于学习使用。而Python作为脚本语言,跨平台性非常好,几乎在所有操作系统中可以使用,在Linux操作系统中便大多原生支持Pyhton。实质上这款语言非常优秀,近年来用户量飞速增长,可以进行桌面程序开发、动态网页开发、数据运算等。

  不需要担心商业授权、付费这些额外的问题,Python本身就是免费软件、自由软件。在Python官方网站http://python.org/你可以下载适用于您操作系统的Python开发与运行环境。需要注意的是目前Python流行版本有Python2.6与Python3.1,2与3的区别较大,虽没改变本质,Python3但并不向下兼容。当然这里我们建议你学习Python3,它很快就会被流行。

  Ruby,较Python来说更新兴的面向对象脚本语言,由日本人开发。实质上它与Python是同类,具有共同的一些特性、脚本语言、面向对象、免费开源、简洁强大、跨平台性,所以在此就不多作介绍。Python与Ruby都是目前的新兴流行脚本语言,不过它们作为两款出生与成长不同的孩子,终究不同,选择哪一个还得取决于你的应用需要。在Ruby的官方中文站点获取更多信息,下载与安装Ruby开发与运行环境。

  PHP,几乎你现在看到的像是门户网站、博客、论坛…它们除去华丽的外表外,网页内部的程序与数据处理都离不开动态网页技术,而PHP正是目前最流行、强大、稳健的动态网页开发脚本语言。它的语言风格类似C、Perl,可以集成在HTML网页代码只中,也遵循面向对象,并且易于学习。其实PHP还可以开发桌面应用程序,不过因为它的优秀,已主要作为了动态网页开发语言。如果你要学习开发Web应用程序,或是今年流行的Web2.0站点,PHP绝对是你的首个选择。因为国内有相当多数量的PHP开源程序与学习资源,学习PHP的道路一路都会平坦。

  因为是动态网页开发,所以开发PHP的Web程序需要搭建环境——需要同时安装一个HTTP服务器与PHP解析程序,大多情况下你还要一个数据库服务器例如MySQL、PostgreSQL。目前最流行的开发环境组合就是Linux+ApacheHTTPServer+MySQL+PHP,简称为LAMP,Linux操作系统大多均带有了这些程序。而如果在Windows环境下,你可以选择自行搭建各种匹配的环境,甚至让IIS作为PHP的Web服务器。或是想图省事,你可以下载安装一个XAMMP,PHP环境搭建一步到位!目前国内外大部分数据服务商(IDC)都提供了完美支持PHP的虚拟主机,你不用担心程序开发后的运行环境问题。开发与学习推荐的IDE有ZendStudio、Eclipse甚至是Dreamweaver。

  Perl,最具成熟、灵活性的脚本语言。学习较为容易,但却非常强大。Python语言的许多特性便是有借鉴自Perl。Perl拥有一个大型的第三方代码库——CPAN,极大的方便于程序人员的开发和使用。在官方网站下载Perl环境,所有的Linux系统都几乎集成了Perl。脚本语言的开发都推荐在Notepad++等高级文本编辑器中完成。

  Pascal,曾经风靡全球的高级程序设计语言,特点是语言简明、结构严谨、较高灵活性,名气不下于C++。前几年流行的Delphi(一种Windows应用程序快速集成开发环境)使用的便是Pascal语言,国际信息学奥林匹克、中国信息技术奥林匹克竞赛的编程项目主要语言。如今Pascal语言在实际应用领域已逐渐被人舍弃,但依然是非常适合初学者的编程语言。你可以下载使用FreePascal这个目前最好的Pascal编译环境,也可以使用Deiphi。

  Basic,或称为Basic系列语言,主要有QuickBasic、QBasic、VBScript、VisualBasic、VisualBasic.NET,甚至有适于儿童学习的SmallBasic。如今PC计算机中流行中的Basic语言,正是鼎鼎大名的比尔·盖茨先生编写,但最初的Basic语言来自上世纪60年代两位美国计算机科学家。

  上世纪末期与本世纪初期,VisualBasic作为一款简单易学的Windows应用程序开发环境,曾在中国被大量学习使用,现在你在书店还可以看到许多VisualBasic考试书籍与题目的身影,不过这些已经是早已淘汰的VB6了,我国的计算机等级考试大纲一直都存在严重问题(这是我的想法)。当时被流行的VB6让很多人快速的迈入了程序员的步子,但VB6因为并不强大,并不能有效开发大型程序。VB的成功并不在于改进后的Basic语言本身,而应是优秀的集成开发环境(IDE)与开发Windows程序的便捷特性性。

  微软公司在2002年推出了VisualBasic.NET,正式推出.NET环境并让VB作为首批成员。如今的VisualBasic已经非常强大,但已完全的依赖于.NETFramework环境,可以开发ASP.NET程序。而且所有优秀特定均已被C#吸收,它们如今的差别并不大。我更倾向推荐有意学习VB的朋友去学习C#。

  汇编语言,又称组合语言,它是一种低级计算机语言,直接与计算机硬件底层交互。在上世纪C、Pascal等高级编程语言出现之前被广泛使用,如今只用于一些底层应用——如硬件驱动程序的开发。汇编语言的难度非常高,使得早期的软件开发工作只有一些“天才级”或“怪才级”的人才能胜任。如今汇编语言基本上不用于软件的开发,但对于程序开发人员来说,学习汇编语言可以让你深层了解计算机与计算机程序的原理。如今汇编语言还被国内部分大学作为必修教程,而汇编语言也会有利于程序的反编译等工作。

  好,至此目前主流的程序开发语言均已作介绍。下面是Q&A时间。

  问:说了这么多,到底哪门编程语言适合我?我该学哪一个?

  答:程序语言并不适合于人,而适用于所要开发的领域或软件的需求。你不能光从名称看出某一门编程语言的含义,也不能跟风——别人学什么我就学什么。而在于你的兴趣,或是你要涉及的领域、开发的程序。如果你要开发桌面程序,那就可以学习C++、C#、VB、Java……如果你要开发动态网页,就可以学习C#、VB、Java……如果你要开发手机程序,就可以选择C++、Java或C#。我提供这么多内容,最重要的便是让你了解每一种编程语言的主要特性,而供你选择。或者你说……“我实在不知道我要选择哪个,我只是想学,这些特性或领域我都不了解也不在乎。”。如果你确定是如此,而如果你真的想涉及程序开发,建议你继续稍作了解。或学习目前流行的“完全面向对象”的编程语言Java、C#或Python,这三个编程语言都很优秀,这是我的推荐。而在深入学习后,你会发现了解这三门语言的其中一个,再想学其它编程语言也可以做到“触类旁通”,很快可以入手,因为这些语言的本质都是一样的,更何况选择一款编程语言就可以开发出大部分这些语言都可以开发的软件,做这些语言都可以做的事情,只是方式上的不同。

  问:我想学习编程,据说要求数学头脑或英语能力?或已经是计算机高手?

  答:如果你已经是一个成年人,这些都不是问题。实际上程序开发和数学虽息息相关,但在大部分应用中对数学水平的要求并不高,初中毕业就可以,甚至小学也没问题。而对于初学者,这些程序开发语言虽使用英文,但实际学习过程中,需要记忆的英文单词并不多,稍作记忆和理解即可掌握,对开发者的英文没有要求。但是!一旦你涉及到高水平的或是企业级的开发项目,会有更多你所未涉及的知识需要在技术文档中查阅,如API、SDK文档,或是MSDN,这些文档中有一部分内容是英文的。就例如腾讯公司招聘程序员,就会要求开发者的英文水平可以基本读懂这些技术文档。事实上对英文的要求就正如此,而我建议软件开发者在平日的学习中对英文水平进行一个修炼,对以后的开发、学习、了解新技术与资讯、编程思想都会有帮助。计算机水平上没有什么特定要求,会打字就可以学编程。不过你需要对所开发的环境如Windows有了解,不然你连新建保存文档,或是操作系统是什么都不明白,你如何顺利学习编程?不过这些并不是大问题,基本上可以迅速的学习到。

  问:如何学?如何学好?如何编写程序?

  答:计算机程序的开发具有点、线、面的性质,更多的需要灵活性。第一,选择一本好教材、好老师,掌握你所学习的编程语言的概念、基本原理、基本语法,然后逐渐深入,完成语言知识面的学习。第二,熟练编程语言后,你需要学习一种叫做设计模式的理论,与其说有助于开发,不如说是必须进行选择与学习,培养良好的编程思维习惯。第三,我们的程序需要做的事情就是解决问题!利用掌握的知识,多练习,多实践,多解决身边的问题。开拓你的大脑创造力,你离编程大师只有一步之遥。学习编程语言就如学习一般显示语言类似,掌握语言的文字、单词、语法,多进行阅读与训练,然后动用你的大脑控制笔去书写优美的篇章。

  问:还有什么要求?

  答:学习程序开发,说难就难,说简单就简单。要明确兴趣与方向,要树立并坚定目标。学习过程中需要多努力,多练习,多问,多Google一下,多思考,多想如何“解决问题”!如能做到这些,真的足够了。

赞(23)
踩(4)
分享到:
华为认证网络工程师 HCIE直播课视频教程