官方文档地址:wxpython.org,此文档记录了阅读官网文档过程的翻译
wxPython以及其构建基于的wxWidgets库都是成熟的项目,目前仍然在或多或少地积极开发中。wxPython 的历史始于1996年,当时wxWidgets已经有大约4年的发展历史,你可以在这里查看wxWidgets历史的更多细节。
Robin口述的历史
1995年,我正在从事一个需要在HP-UX系统上部署图形用户界面(GUI)的项目,但我的boss还希望在几周后的展会上用他那台运行Windows 3.1的笔记本电脑展示一些东西。因此,我开始寻找一个跨平台的C++ GUI工具包来做一个原型。在那个没有谷歌的年代,这并不容易,但我发现有几种商业替代品可供选择(这些产品如今都已不复存在),以及许多可以免费获取源代码的工具包。
在评估每个免费工具包以满足我的短期需求,并决定哪种商业产品最适合我们的长期需求时,我在 wxWidgets网站上看到了“Python bindings”这个术语(在这里,“binding”指的是Python语言和 wxWidgets工具包之间的连接)。出于对如何将一个软件工具包“绑定”到爬行动物(Python,直译为蟒蛇)的好奇(直到那时我从未听说过Python语言),我点击了链接,接着是下一个链接,再下一个,直到我最终到达Python 1.2教程文档。三个小时后,我从一个本地的C++高手变成了一个Python传道者,向周围的所有开发人员展示我刚刚发现的这个很酷的新东西。
所以,我没有继续做我的原型,而是和芬兰的Harri Pasanen一起推进wxWidgets的Python绑定,也就是 wxPython 0.2,还得到了Edward Zimmerman的一些帮助。我们让它变得足够好用,以至于我可以用Python为我的boss做我的原型,但wxPython维护和增强起来是个噩梦,因为一切(C++扩展模块代码、Python代理模块、构建系统等)都是手工完成的,对wxWidgets的小改动或增强通常需要在wxPython代码的多个地方进行修改,以增加对增强或修复的支持。当代码达到数万行时,以这种方式工作变得非常笨拙和脆弱。再加上当时没有集中式的源代码库(这也是在SourceForge时代之前很久的时间点),所以我们通过电子邮件互相发送代码更改,你可以想象这其中的困难。
大约在那个时候,我不得不重新开始从事实际工作,因为我在工作中的主要项目从一个初步的想法逐渐发展成为一个全面展开的开发项目,我负责多个开发人员、参与设计会议以及应对各种截止日期等事务,因此我又完全回到了C++的世界(尽管我能够使用Python来编写该项目的一些构建和测试脚本)。Harri也无法再投入时间进行开发,因此wxPython的开发进展变得极其缓慢,最终几乎完全停滞了。
1997年,我发现了SWIG(Simplified Wrapper and Interface Generator,简化包装器和接口生成器),并意识到它可以解决我们在wxPython项目中所面临的维护问题。SWIG是一种软件开发工具,用于将C和C++程序与各种高级编程语言连接起来。它支持多种目标语言,包括常见的脚本语言如Python。在大约三到四周的业余时间里,我几乎完全使用SWIG重新实现了之前手工完成的所有内容(甚至更多),这原本需要我全职工作数周,Harri兼职工作数月。在被另一个项目分散注意力一段时间后,我发现wxWidgets 2.0正在积极开发中,但它有一个全新的架构,所以我不得不重新开始。不过,这次新架构简化了足够多的内容,以至于只用了大约一周的业余时间就完成了。因此,在1998年夏天,第一个“现代版本”的wxPython发布了,并且从那时起一直处于积极开发状态。
正如人们常说的,“余下的就是历史了”。然而,重要的是要注意,SWIG(Simplified Wrapper and Interface Generator,简化包装器和接口生成器)使我能够轻松创建和维护数十万行代码。因此,wxPython功能集的庞大程度很大程度上要归功于David Beazley和其他为SWIG项目做出贡献的开发者。
--Robin, 2005
Phoenix项目的历史
待完成……
最近更改
wxPython的“最近更改”页面可以追溯到1998年的0.3版本。那已经是很久以前的事了,自那以后已经发布了许多版本。每个版本的更新日志都会进行更新,并且可以在这里查看。