有關(guān)Python程序大揭秘
但是這個(gè)子類的作者需要相當(dāng)精確地理解 Logger.log_timestamp() 已經(jīng)做了什么;而且除非通過(guò)在子類中完全重寫 .log_timestamp() 方法并且不調(diào)用父方法,否則沒(méi)有辦法除去消息。
一個(gè)非?;镜?PyQt 應(yīng)用程序總有一些樣本代碼,這些代碼在哪里都相同,Tkinter 代碼也是這樣。但是,當(dāng)我們進(jìn)一步研究設(shè)置應(yīng)用程序所需的代碼,以及顯示窗口構(gòu)件的代碼時(shí),區(qū)別就顯現(xiàn)出來(lái)了。
工具箱是一個(gè)使用廣泛的跨平臺(tái) GUI 工具箱,可用于 Windows、Linux、Mac OSX 和許多手持平臺(tái)。QT 具有良好結(jié)構(gòu)化(但靈活)的面向?qū)ο蟮慕Y(jié)構(gòu)、清晰的文檔以及直觀的 API。
一般來(lái)說(shuō),選擇用于應(yīng)用程序的 GUI 工具箱會(huì)是一件棘手的事。使用 Python(許多語(yǔ)言也一樣)的程序員可以選擇的 GUI 工具箱種類繁多,而每個(gè)工具箱都有各自的優(yōu)缺點(diǎn)。
有些速度比其它工具箱快,有些比較?。挥行┮子诎惭b,有些更適合于跨平臺(tái)使用(對(duì)于這一點(diǎn),還要指出,有些支持您需要滿足的特定特性)。當(dāng)然,各種庫(kù)都相應(yīng)具有各種許可證。
對(duì)于 Python 程序員而言,缺省的 GUI 選擇是 Tk(通過(guò) Tkinter 綁定)— 其原因顯而易見。Tkinter 和閑置的 IDE 是由 Python 創(chuàng)始人編寫的。它們是作為大多數(shù) Python 分發(fā)版的缺省選擇而出現(xiàn)的。標(biāo)準(zhǔn) Python 文檔討論了 Tkinter,但沒(méi)有涉及任何其它 GUI 綁定。這是故意的!
至少可以這么認(rèn)為,如果 Tk 和 Tkinter 不是這么糟糕,程序員就沒(méi)有理由去尋找替代品了。要誘導(dǎo) Python 程序員放棄缺省選擇,那么工具箱必須提供額外的東西。PyQt 就是這樣一個(gè)工具箱。PyQt 所具有的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)超過(guò)了 Tkinter(它也有幾個(gè)缺點(diǎn))。Qt 和 PyQt 速度都很快;Qt 和 PyQt 的設(shè)計(jì)完全是面向?qū)ο蟮模?/P>
Qt 提供了一個(gè)設(shè)計(jì)良好的窗口構(gòu)件集合,它比 Tk 所提供的要大得多。就其缺點(diǎn)而言,Qt 的許可證受到的限制比許多工具箱(至少在非 Linux 平臺(tái)方面)都多;正確安裝 Qt 和 PyQt 常常會(huì)很復(fù)雜;另外,Qt 是一個(gè)相當(dāng)大的庫(kù)。PyQt 應(yīng)用程序的用戶將需要設(shè)法完成安裝 Qt 和 PyQt,這使分發(fā)變得很困難。
PyQt 嚴(yán)格遵循 Qt 的發(fā)放許可。特別是,它可用于 UNIX/X11 平臺(tái)上的 GPL,并可用于 Zaurus 上的 Qt Palmtop Environment 環(huán)境。還存在用于較老的 Qt 版本的免費(fèi)(free-as-in-free-beer)Windows 軟件包。PyQt 的商業(yè)許可證可用于 Windows。
對(duì)于本文而言,PyQt 有一個(gè)方面優(yōu)于許多其它工具箱,它值得我們特別關(guān)注。Qt 使用一種稱為信號(hào)/插槽(signals/slots)的機(jī)制在窗口構(gòu)件(以及其它對(duì)象)之間傳遞事件和消息。
這種機(jī)制完全不同于包括 Tkinter 在內(nèi)的大多數(shù)工具箱所用的回調(diào)(callback)機(jī)制。使用信號(hào)/插槽以靈活且可維護(hù)的方式控制對(duì)象間通信要比使用脆弱的回調(diào)風(fēng)格容易得多。應(yīng)用程序越大,Qt 的這個(gè)優(yōu)勢(shì)就越重要。
【編輯推薦】






















