具體說(shuō)明Python核心編程框架
下面文章主要介紹Python核心編程的構(gòu)造和技巧,Python確實(shí)是一種十分精彩又強(qiáng)大的語(yǔ)言,可以通過(guò)在不同的平臺(tái)上進(jìn)行程序的運(yùn)行和操作,即使對(duì)不了解開(kāi)發(fā)編程的用戶來(lái)說(shuō)Python確實(shí)是一門(mén)入手的好語(yǔ)言。
所以先把它們放進(jìn)這段代碼,在后面會(huì)針對(duì)它們提一些問(wèn)題。第二行比較有趣,導(dǎo)入 wxPython 的 wx 庫(kù)。當(dāng)然,wx 庫(kù)(基本 wxPython 聲明)包括基本類(lèi),如框架和應(yīng)用程序。
/注意這些行的結(jié)尾沒(méi)有分號(hào)。如果您編寫(xiě)過(guò) Perl 程序,那您要花費(fèi)一點(diǎn)功夫來(lái)熟悉 Python 的輸入習(xí)慣。但等等,它對(duì)您來(lái)說(shuō)是陌生的。在第三行,定義了第一個(gè) Python 類(lèi) -- main_window。main_window 類(lèi)是在 wx 模塊中定義的 wxFrame 類(lèi)的派生類(lèi)。正如您猜想的,任何窗口都是 wxFrame 類(lèi)。
在第四行,定義了初始化方法,main_window 需要定義的唯一方法(當(dāng)然,其它的在 wxFrame 類(lèi)中)。初始化方法取參數(shù) parent、id、title 以及當(dāng)然還有(作為該對(duì)象的引用的)self。self 參數(shù)是所有Python核心編程法的第一個(gè)參數(shù)。
到現(xiàn)在為止,如果您編寫(xiě)過(guò) C/C++,您一定奇怪為什么沒(méi)有花括號(hào)。是很奇怪,Python 把縮進(jìn)當(dāng)作重要的句法。任何有子語(yǔ)句的語(yǔ)句以冒號(hào)結(jié)束,所有該行下的縮進(jìn)行都屬于以該冒號(hào)終止的語(yǔ)句。
當(dāng)縮進(jìn)回復(fù)到原來(lái)的縮進(jìn)時(shí),這一塊就完成了。更為奇怪的是,這種安排實(shí)際上很好用,剛開(kāi)始編程的程序員發(fā)現(xiàn),這要比用花括號(hào)來(lái)說(shuō)明結(jié)構(gòu)要容易。幸運(yùn)地是,這還意味著更少的擊鍵次數(shù),所以老程序員也能接受它。
所以縮進(jìn)的第 5、6 和 7 行屬于在第 4 行中定義的方法。它們分別調(diào)用 wxFrame 父類(lèi)的初始化例程(實(shí)際進(jìn)行設(shè)置一個(gè)窗口的所有繁重工作),定義一個(gè)控件以適合新的主窗口,以及確保窗口是可見(jiàn)的。
wxPython 會(huì)重新調(diào)整父窗口的大小,除非專(zhuān)門(mén)告訴不要這樣做。如果您曾編寫(xiě)過(guò)任何 Microsoft Windows 代碼,通過(guò)重新調(diào)整控件大小來(lái)匹配父窗口,那您會(huì)很快喜歡 wxPython。
第 6 行的實(shí)際意義是完成一個(gè)如同 Notepad 一樣的編輯器。這還不算什么。用 C/C++ 代碼,則需要更多才能實(shí)現(xiàn),不是嗎?記住 -- 我們?cè)谶@做的不是固定大小的對(duì)話框,它是真正在窗口主體中和可調(diào)整大小的帶編輯器的 Windows- 化應(yīng)用程序。
讓我們繼續(xù)。第 8 行定義了由 wxApp 類(lèi)派生的 App 對(duì)象。它指定了應(yīng)用程序?qū)ο?,?dāng)運(yùn)行時(shí),創(chuàng)建一個(gè) main_window 對(duì)象,并將它設(shè)置為頂部窗口。最后定義完類(lèi),創(chuàng)建應(yīng)用程序?qū)ο螅_(kāi)始運(yùn)行它的主循環(huán)。
如果您做過(guò)任何 C/C++ Windows 編程,會(huì)認(rèn)識(shí)到 MainLoop 方法是所有 Windows 程序的正常事件循環(huán)。這個(gè)啟動(dòng)代碼的風(fēng)格確實(shí)與腳本語(yǔ)言保持一致。記住,Python 解釋器逐行讀取代碼,并邊讀邊執(zhí)行它。所以,一旦定義了類(lèi),我們只需在腳本中調(diào)用它。
這就是 它。在這十五行代碼中,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的文本編輯器,這段代碼無(wú)需修改就可以在 Windows 或 UNIX 上運(yùn)行。而且很容易添加更多特性,這太好了,在下一節(jié)將要講述這些。
您可能認(rèn)為,“解釋型語(yǔ)言,效率不高。對(duì)于較大的程序,執(zhí)行起來(lái)會(huì)很慢。”在一定程度上,這是正確的。事實(shí)上,任何影響性能的代碼通常用 C/C++ 重新實(shí)現(xiàn),并鏈接到 Python核心編程,這是很容易做的。所以 Python 通常用作綁定功能性模塊和 GUI 顯示(或應(yīng)用程序服務(wù)器功能,如果您需要該功能)的粘合劑。但作為粘合劑,Python 是非常有效的。
您可以在很短的時(shí)間內(nèi)用 Python 實(shí)現(xiàn)真正的程序,由于其面向?qū)ο蠛透袷椒矫嬗邢薜膭?chuàng)造機(jī)會(huì),它們通??墒褂煤脦讉€(gè)星期。而且,如果您懷疑使用解釋型語(yǔ)言將大程序結(jié)合在一起的想法,那您不妨考慮一下 Microsoft Word 的早期版本是如何實(shí)現(xiàn)的。
至少最近的 Windows 的 Word 版本 6.0,其 Word Basic 函數(shù)事實(shí)上只是編譯過(guò)的代碼;而 GUI 是由 pcode 解釋性型語(yǔ)言構(gòu)建的。(MS Word 6.0 是用 Word Basic 編寫(xiě)的,很有效,這是一個(gè)很聰明的設(shè)計(jì),其原因之一 -- 它是最早用內(nèi)置解釋器的桌面程序。)
這里您所損失的是在性能方面(實(shí)際上,很少),但您可以很容易地通過(guò)簡(jiǎn)化實(shí)現(xiàn)和(更重要)簡(jiǎn)化定制來(lái)彌補(bǔ)。事實(shí)上,通過(guò)包含 Python 您已經(jīng)自動(dòng)包括了易于展現(xiàn)給您的用戶的腳本語(yǔ)言,同時(shí),對(duì)于編程的新手來(lái)說(shuō),該語(yǔ)言也證明了其易于學(xué)習(xí)。
如果鉆研它,可以用比您現(xiàn)在花費(fèi)的要少的功夫創(chuàng)作出世界級(jí)的軟件。因?yàn)?,如果該語(yǔ)言能為 Microsoft 服務(wù),那么,它也能為您服務(wù)!無(wú)論如何,言歸正傳,這里向您展示一個(gè)程序,它事實(shí)上做一些值得做的事情。這個(gè)程序讓您創(chuàng)建一個(gè)稱之為項(xiàng)目的文本文件列表。您可以編輯和保存它們。
更重要的是,您可以很容易地看到如何進(jìn)一步增強(qiáng)基本組織器。我使用一個(gè)擴(kuò)展版本為 CVS(標(biāo)準(zhǔn)開(kāi)放源碼版本控制系統(tǒng))的前端。代碼在下面。我們(仍然相當(dāng)?。┑膽?yīng)用程序從 15 行擴(kuò)展到大約 300行,但它現(xiàn)在能實(shí)現(xiàn)許多事情。
【編輯推薦】