关于本书
谁应该阅读本书?
很自然,我们希望每个人都阅读本书。如果你正在书店阅读本书,并在考虑是否购买它,我们会说:“买下它!给你们身边的人也买一本,他们今后将会感谢你。”
也就是说,我们撰写本书时,我们头脑中对于读者您做了一定的假设。我们假设您不需要我们解释Python
编程语言的基础。在书中,我们提供了大量的Python
代码。尽管我们认为Python
代码非常好懂,但我们还是认为必须现在就让您知道在书中我们没有提供关于Python
基础的入门指南。如果您需要一份Python
指南,我们向您推荐Manning出版的《The Quick Python Book》
,该书由Daryl Harms
和Kenneth McDonald
编写。
同时我们也假设您至少对描述图形界面对象的基本术语有所熟悉,并从用户角度对图形界面有个大概的了解。至于更加高级的用户界面概念,或者那些不常见的用户显示元素,我们会在用到的时候加以详述。
我们并没有假设您之前就掌握wxPython相关知识。如果您之前就接触过wxPython,我们仍然希望您从本书中能够找到新的信息,或者至少您会发现本书是比现有在线文档更加有用的资源。
本书是如何组织的?
我们将《活学活用wxPython》分成了三个部分。第一部分简要介绍wxPython
的相关概念,并指导读者开始运用wxPython,同时还提供了一些wxPython最佳实践的信息。第一部分的章节包括:
第一章 欢迎使用wxPython 在该章节中,我们对wxPython进行介绍,并解释为什么说它是自切片面包以来最伟大的事务,同时还提供了用于创建wxPython的一些技术背景资料。
第二章 给wxPython程序一个坚实的基础 讨论了wxPython中最重要的两个对象。每个应用程序都必须有一个应用程序对象和一个顶级窗口。该章将展示如何启动一个wxPython程序,以及如何管理它的生命周期。
第三章 在事件驱动环境中开发 wxPython中的控制是通过事件进行管理的。该章讨论的是如何处理事件(Event),以及如何让它们像钩子一样驱动功能。
第四章 使用
PyCrust
让wxPython更易于处理PyCrust
是用wxPython创建的一种Python外壳,包括了许多高级和有用的特性。你不仅可以使用PyCrust
来进行wxPython开发,你也可以将程序封装于其中来进行调试,而且也可以在自己的应用中对PyCrust
进行复用。第五章 创建蓝图 该章讨论了在GUI编程者经常遇到困难的领域内的三个最佳实践。我们展示了如何通过重构( refactoring )来提升代码的结构和可维护性。通过对 Model/View/Controller 设计模式的探索,我们展示了如何对GUI代码进行单元测试来将错误减少化。
第六章 使用基础构建块 该章是第一部分和第二部分的一座桥梁。在已经展示的基础思想上,我们通过构建一个画板应用对第二、三部分将要讨论的特性进行了一些提示。
第二部分开始了本书更加细节的部分。第二部分中的章节讨论wxPython中最常用的部分内容。这些章节包括了对基础构件集合的入门介绍,讨论了标准窗体和对话框,以及对绘图和布局的相关信息。第二部分中的章节包括:
第七章 使用基本控件 该章覆盖了基本构件集合的API函数,包括文本框、按钮、列表框等等。
第八章 将构件放入窗体 所有的wxPython构件都必须放置在窗体或对话框中。该章覆盖了窗体如何运作、有哪几类窗体、如何管理窗体中的构件。
第九章 使用对话框给用户选择 对话框的行为方式和窗体的略为不同。我们在该章中讲述了模式对话框以及标准预定以wxPython对话框如何工作。我们同时也展示如何使用wxPython校验器来帮助管理对话框中的数据。
第十章 创建和使用wxPython菜单 多数窗口应用程序具备菜单。我们将展示如何向菜单栏添加菜单,以及如何向菜单中加入菜单项。同时也包含了特殊菜单,比如检查框、无线菜单等内容。我们也将讨论了键盘快捷键和高效使用菜单的有用的指引。
第十一章 使用尺寸管理器放置构件 在 wxPython 中,尺寸管理器(sizers)被用来减轻手工放置构件这件苦差事带来的痛苦。wxPython中有多个有用的尺寸管理器,我们将向您展示如何使用它们,以及哪种布局最适合哪个管理器。
第十二章 维护基本图形图像 任何图形界面的基本目标都是在屏幕上画线和形状。在wxPython中,有一系列的可用画图工具可供使用。同时还有一个叫做设备背景(device context)的强大的抽象概念,它使得我们可以向目标作图,而不考虑目标是窗口、打印机还是文件。
第三部分包括了对wxPython更加深入部分的细节讨论。它首先对三个最复杂的wxPython进行了描述,随后讨论了不同的打印和显示机制,最后对一些不值得单独设立章节的有用事务进行了简要介绍。第三部分的章节包括:
第十三章 构建列表控制和管理列表项 wxPython的列表控件给了我们以图标模式、列表模式或多列报告模式显示“浏览风格”列表的能力。你也可以定义排序行为,并允许用户对列表条目进行编辑。
第十四章,调整网格控件 如果你需要像电子表格一样的东西,wxPython的网格控件是符合你需求的完整功能构件。它允许对网格显示和行为的彻底控制,并允许完全的自定义配置。
第十五章 “爬上”树型控件 wxPython 树型控件使得我们可以对分等级的数据进行紧凑显示,包括但不限于目录树或者类的继承关系。你也可以允许用户任意对条目进行编辑。
第十六章 向wxPython应用程序中并入HTML 在wxPython中,你可以使用HTML来简化格式化文本的显示和打印。wxPython中的HTML引擎可以定义以用于满足特殊需求。
第十七章 wxPython打印框架体系 wxPython中的打印通过一些专门的打印、打印数据和打印预览对象来进行管理。在该章中,我们对它们如何一起工作进行了探索。
第十八章 使用其他wxPython功能 在该章中,我们讲述了一些重要的特性,它们还没有长到可以单独设立章列的地步,包括剪切、粘贴、拖放和多线程。
如何使用本书
如何使用本书取决于您对wxPython的掌握了解程度我们对本书的策划目标是要对专家和初学者都有所帮助,但也希望不同层次的用户对本书的不同部分都有或多或少有所共鸣。
如果你是wxPython初学者,你一定会想从第一部分开始。第一章至第三章帮助您夯实wxPython相关概念的坚实基础。第六章则对构建合理大小程序的步骤进行了完整回顾。第五章介绍如何让代码更易于管理的方法,第四章提供了一些协助进行调试、编写wxPython应用的工具。当你开始编写自己的wxPython程序时,你就已经开始使用第二部分讨论的API了——我们试图按照功能进行组织章节内容,以方便您查找有用的主题。
如果您对wxPython已经熟悉了,你可能将时间主要花在第二部分和第三部分之上。然而,我们依然推荐您快速阅读一遍第一部分。如果您不熟悉PyCrust
,第四章对您来说就是新内容了,我们相信在第五章中您也能找到一些有用的内容。
在第三部分,您将会发现一些更加复杂的构件的讨论,您将发现这些章节中的代码比其他章节中的更长也更加完整。 本书中的这些例子都是基于Python 2.3.x编写的——我想我们没有包括所有Python 2.4和wxPython 2.5中的新特性。wxPython 2.6.x版本发布比较迟了,因此本书无法涵盖其内容。然而,它确实包含了大量的BUG补丁和对wxWidgets的有限兼容。
正式开始之前,还有一点我们必须指明。那就是本书并不准备事无巨细地提供wxPython的所有内容的参考。我们期望本书能够为您需要知道的所有功能特性提供参考,但它确实没有100%覆盖所有的特性。出于时间和空间的考虑,我们不得不选择将重点放在某些元素上,而其他的一些则无法详细介绍。例如,有一些从C++ wxWidgets中继承的wxPython特性在标准Python库中得到了复制,对于这些特性我们选择不在本书中涵盖。同时,如果你使用了1990年代的Windows操作系统,您可能会发现一些例子中的特性并非如所描述的那样起工作,在此我们没有足够的空间枚举出这些例外。最后,有一些核心构件集合的特性我们认为并不经常用到,因此我们也没有空间公平对待它们。
印刷约定
本书中始终使用一下约定:
- Courier 字体使用在所有代码列表中
- Italics 字体用来介绍新术语
- Courier Bold 字体有时用来吸引您对部分代码的注意。
- 代码注释用来将您的注意力指向特定的代码行注释采用句点标记,比如 b.
- Courier 字体用于代码中的文本,wxPython类和方法名称,或者Python代码片段。
代码下载
本书中使用的所有例子的源代码可以从出版商的网站http://www.manning.com/rappin下载。
从何处获得更多帮助
虽然我们尽可能地让本书易于理解,但我们不可能预见您你在使用wxPython过程中可能预见的所有用法和问题。
wxPython的主站http://www.wxpython.org有一些资源也许可以帮助您解决问题。
官方在线文档位置为:wxpython.org/docs/api/
在http://wiki.wxpy-thon.org/有一个互助wiki网站,当然你也可以订阅http://www.wxpy-thon.org/maillist.php处的邮件列表。
作者在线
也可以从作者在线论坛获取帮助,这是一个由Manning出版商提供的私人网页论坛。您可以通过该论坛对本书进行评论,咨询技术问题,接受来自作者或其他读者的帮助。使用浏览器访问http://www.man-ning.com/rappin可获取这些免费服务。论坛的欢迎页面给出了注册和其他行为所需的所有信息。 作者在线论坛( Author Online forum)是Manning始终忠于读者的表现方式之一。作者对论坛中的参与是完全资源的,没有任何特定级别的义务性。论坛是与他人分享思路和向他人学习的好途径。主要本书仍在销售中,就可以出版商的网站进入作者在线论坛。
关于书名
通过组合介绍、回顾和“如何”例子,“活学活用”书籍设计意图是帮助学习和记忆。按照认知科学的研究成果,人们记住的事物是他们在自主探索中获得的事物。 尽管Manning
公司没有谁是认知科学家,但我们确信要想让所学变成永久财富,必须经历探索、实际动手操作,(有趣地是还包括)对所学内容的重述等步骤。人们对新事务进行理解和记忆,也就是说只有在积极探索之后,人们才会掌握它们。人们总是在使用的过程中学习。“活学活用”引导的基本部分是实例驱动的。它鼓励读者自己尝试,对新代码实际操作以及探索新的思路。 对于本书的书名来说,还有一条更加通俗的理由,我们的读者都很忙碌。他们使用书籍往往是为了完成某项工作或解决某个问题。他们需要的书籍能够允许他们自由跳跃式阅读,只在需要某个知识点的时候才对它进行学习。他们需要书籍使自己处于“运转”状态。该系列的书籍是为这样的读者设计的。
关于封面绘图
《活学活用wxPython》一书的封面图形为“Soldat Japonais”,一名日本士兵。该插图取自1796年法国出版的由J. G. St. Saveur
所著的法文旅游书籍《Encyclopedie des Voyages》
。在那个时候,为寻求快乐而旅行还是个相对新鲜的现象,像该书一样的旅游指南非常受欢迎,它不仅介绍了旅程者自己,还反映了惬意的旅行者前往法国其他地区及国外居住地的见闻。
《Encyclopedie des Voyages》
一书中多样的插图生动地反映了200多年前世界各地的城镇和省份的独特和个性。这个时代,两个相隔仅数英里的地区会通过服饰代码来区分人所属地。这本旅行指南在狂热的现实中唤醒了我们关于那个时代及其他历史时期的那种与世隔绝的感受。
那个年代之后,服饰代码已经发生变化,地区差异也随时代变迁逐渐褪色。现在,我们经常会很难区分居住不同大洲的居民。也许,乐观点来说,我们已经将文化、可见差异与更加多样性的个体生活做了一次交易。或者说一个更多样的充满趣味的的理性、技术性生活。 在Manning
,我们通过该旅行指南中的图片将两个世纪之前地区生活间的丰富差异带回现实,以此赞美计算机商业的独创性、能动性与乐趣性。