# 關于本書
1. [關于本書](#A.2BUXNOjmcsTmY-)
1. [誰應該閱讀本書?](#A.2BjAFelIvllgWL.2B2csTmb.2FHw-)
2. [本書是如何組織的?](#A.2BZyxOZmYvWYJPVX7Efsd2hP8f-)
1. [如何使用本書](#A.2BWYJPVU9.2FdShnLE5m-)
2. [印刷約定](#A.2BU3BSN36mW5o-)
3. [代碼下載](#A.2BTuN4AU4Lj30-)
4. [從何處獲得更多幫助](#A.2BTs5PVVkEg7dfl2b0WRpeLlKp-)
5. [作者在線](#A.2BT1yABVcofr8-)
3. [關于書名](#A.2BUXNOjk5mVA0-)
4. [關于封面繪圖](#A.2BUXNOjlwBl2J.2B2Fb.2B-)
### 誰應該閱讀本書?
很自然,我們希望每個人都閱讀本書。如果你正在書店閱讀本書,并在考慮是否購買它,我們會說:“買下它!給你們身邊的人也買一本,他們今后將會感謝你。”
也就是說,我們撰寫本書時,我們頭腦中對于讀者您做了一定的假設。我們假設您不需要我們解釋`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](http://www.manning.com/rappin)下載。
#### 從何處獲得更多幫助
雖然我們盡可能地讓本書易于理解,但我們不可能預見您你在使用wxPython過程中可能預見的所有用法和問題。
wxPython的主站[http://www.wxpython.org](http://www.wxpython.org)有一些資源也許可以幫助您解決問題。
官方在線文檔位置為:[wxpython.org/docs/api/](http://www.)
在[http://wiki.wxpy-thon.org/](http://wiki.wxpy-thon.org/)有一個互助wiki網站,當然你也可以訂閱[http://www.wxpy-thon.org/maillist.php](http://www.wxpy-thon.org/maillist.php)處的郵件列表。
#### 作者在線
也可以從作者在線論壇獲取幫助,這是一個由Manning出版商提供的私人網頁論壇。您可以通過該論壇對本書進行評論,咨詢技術問題,接受來自作者或其他讀者的幫助。使用瀏覽器訪問[http://www.man-ning.com/rappin](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`,我們通過該旅行指南中的圖片將兩個世紀之前地區生活間的豐富差異帶回現實,以此贊美計算機商業的獨創性、能動性與樂趣性。
- 活學活用wxPython
- 前言
- 致謝
- 關于本書
- 第一部分
- 第一章 歡迎使用wxPython
- 第二章 給wxPython程序一個堅實的基礎
- 第三章 在事件驅動環境中開發
- 第四章 用PyCrust使得wxPython更易處理
- 第五章 繪制藍圖
- 第六章 使用wxPython基本構件
- 第二部分 基礎wxPython
- 第七章 使用基礎控件
- 第八章 將構件放入窗體中
- 第九章 通過對話框讓用戶選擇
- 第十章 創建和使用wxPython菜單
- 第十一章 使用sizer放置構件
- 第十二章 操作基本圖像
- 第三部分 高級wxPython
- 第十三章 建造列表控件并管理列表項
- 第十四章 網格控件
- 第十五章 樹形控件
- 第十六章 在應用程序中加入HTML
- 第十七章 wxPython的打印構架
- 第十八章 使用wxPython的其他功能