標籤:
Windows下面做C++那會用慣了MFC,對架構產生了依賴,使用架構雖然佔用了很多不必要的系統資源,也拖慢了程式的運行效率,但是做個demo什麼的往框框裡填點代碼就可以的確很方便。而且對我來說,這樣比純手寫更規整,哪個部分應該填什麼不應該填什麼系統會幫你甄別,避免了純手打的隨意性。今天上網隨便搜搜Python的文章,想起了以前掃過一眼的PyQt。其實我對架構最基本的要求就是當我需要做UI的時候一定要簡單實用,當然,最好是有很強的擴充性,這樣以後真需要玩的時候也有得玩。可能個人水平問題,用過python標配的TKinter,寫出來的東西太醜陋,而且控制項位置很難控制。也有的人推薦wxPython,可惜下載頁上提示目前只支援Python2.7。順便吐槽一下,Python3都出來這麼久了,為什麼原來很多好用的工具都沒跟進。其實棄用wxPython的原因還有有人說bug多,文檔資源不豐富,其實我對文檔這種東西還是很依賴的。用MFC的時候,文檔全面細緻到讓我欽佩,很多時候做個demo照扒例子就夠用,學點什麼東西很容易上手。其實前面也說了,我需要的是架構,不只是一些UI層面的東西,而TKinter和wxPython僅僅是GUI上的一些類庫,因而又回到了PyQt這個似乎更全面的類庫上來。先來看一下python頁面對PyQt的描述:PyQt is one of the two most popular Python bindings for the Qt cross-platform GUI/XML/SQL C++ framework (another binding is PySide).再來看一下百度對Qt的描述:
Qt是一個1991年由奇趣科技開發的跨平台C++圖形化使用者介面應用程式開發架構。它既可以開發GUI程式,也可用於開發非GUI程式,比如控制台工具和伺服器。Qt是物件導向的架構,使用特殊的代碼產生擴充(稱為元對象編譯器(Meta Object Compiler, moc))以及一些宏,易於擴充,允許組件編程。2008年,奇趣科技被諾基亞公司收購,QT也因此成為諾基亞旗下的程式設計語言工具。2012年,Qt被Digia收購。2014年4月,跨平台整合式開發環境Qt Creator 3.1.0正式發布,實現了對於iOS的完全支援,新增WinRT、Beautifier等外掛程式,廢棄了無Python介面的GDB調試支援,整合了基於Clang的C/C++代碼模組,並對Android支援做出了調整,至此實現了全面支援iOS、Android、WP。
Qt是1991年奇趣科技開發的一個跨平台的C++圖形化使用者介面應用程式架構。它提供給應用程式開發人員建立藝術級的圖形化使用者介面所需的所有功能。Qt很容易擴充,並且允許真正地組件編程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫和 Windows 平台上的 MFC,OWL,VCL,ATL 是同類型的東西。
好了,看到這裡我滿意了,因為它說是與MFC是同類型的東西,看來是沒找錯。
再回到前面,我不得不承認,我有強迫症,因為我注意到出了PyQt外,還有另外一個用python封裝Qt的東西,PySide,它跟PyQt到底誰更好呢?python首頁對PySide的描述簡簡單單,沒有發現什麼特別的地方。在來到PySide的wiki頁面,我看到The latest version of PySide is 1.2.2 released on April 25, 2014 and provides access to the complete Qt 4.8 framework.因為是初學python,python2和python3對我來說是一樣的陌生。雖然網上關於python2的項目和文檔非常多,但python3替代python2是大勢所趨,只是時間問題。所以既然是初學,就想省去之後再從2過度到3的功夫。當然,基於現在python3的項目和文檔非常少,從python3開始學起路就會漫長一點。基於這種思路,我希望我所用到的東西都是最新的,能跟上形勢的,Qt最新版本已經更新到5.x,而PySide目前才跟到4.8,而且上一次的更新日期是14年,網上也有文章說PySide對Python3目前也只是部分支援,所以基本就放棄了對PySide的期望。不過基於PySide是PyQt強有力的對上,還是扒了一下網友對PyQt與PySide的比較:
今天在 Python-CN 郵件組裡看到討論 PyQt 和 Nokia PySide 的問題。
PyQt 是商業及 GPL 的著作權, 而 PySide 是 LGPL.
也就是如果使用 PyQt 做商業應用的話就需要付費, 而使用 Nokia 的 PySide 則不需要。
題外話:
自從 Nokia 收購了 Qt, 一直大力推廣 Qt。前天發布的最新的 PySide 已經支援 MS Windows,
而且是 LGPL 的。
相信 PySide 未來會比 PyQt 更強大易用。按照 Nokia 的說法是會更加 Pythonic。
PySide is an open source sofware project providing Python bindings for the Qt framework. Qt is a cross-platform application and UI framework, allowing the developers to write applications once and deploy them across many operating systems without rewriting the source code, while Python is a modern, dynamic programming language with a vivid developer community.
Combining the power of Qt and Python, PySide provides the wealth of Qt framework for developers writing software in Python and presents a first-class rapid application development platform purported to be available on all major operating systems.
// 以下為在網上搜尋的結果
LGPL概念
LGPL 是 GNU Lesser General Public License (GNU 寬通用公用許可證)的縮寫形式,舊稱 GNULibrary General Public License (GNU 庫通用公用許可證),在寬鬆程度上與 BSD, Apache,XFree86 許可證相似。
GPL(General Public License)和LGPL( Lesser General Public License)是GNU的兩種License。越來越多的自由軟體(Free Software)使用GPL作為其授權聲明,如果對GPL一點都不瞭解,有可能在使用自由軟體時違反了GPL的授權。如果是個人或不正規的公司倒也無所謂,但如果是有規模的公司,恐怕會有被起訴的風險。
在使用Log4cpp時我想到了授權的事情,於是有了興趣對GPL做一下瞭解。這是必要的,因為公司也維護了一個驗證過的自由軟體庫,裡麵包含的自由軟體除了功能上是可靠的,另外就是一定可以被私人使用的,否則後果很嚴重。
Log4cpp最初的版本使用GPL作為授權聲明的,在0.2.1版本以後改用更為寬鬆的 LGPL。LGPL最初是Library GPL的縮寫,後來改稱作Lesser GPL,即為更寬鬆的GPL。當一個自由軟體使用GPL聲明時,該軟體的使用者有權重新發布、修改該軟體,並得到該軟體的原始碼;但只要使用者在其程式中使用了該自由軟體,或者是使用修改後的軟體,那麼使用者的程式也必須公布其原始碼,同時允許別人發布、修改。也就是說,使用GPL聲明下的的自由軟體開發出來的新軟體也一定是自由軟體。
LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟體開發商的支援而提出的。與 GPL的最大不同是,可以私人使用LGPL授權的自由軟體,開發出來的新軟體可以是私人的而不需要是自由軟體。所以任何公司在使用自由軟體之前應該保證在 LGPL或其它GPL變種的授權下。
編輯本段
Richard Stallman關於GPL和LGPL的論述
為什麼你不應該使用LGPL發布你的下一個庫
GNU計劃在使用庫時有兩個首要的許可證.一個是GNU LGPL(庫GPL);另一個是普通的GNU GPL.選擇不同的許可有很大的不同:選擇LGPL允許在私人程式中使用該庫;選擇普通的GPL則只允許在自由軟體中使用它.
關於哪一種許可證對指定的庫是最好的這一問題實際上是一個策略問題,它取決於實際情況.當前,大多數的GNU庫被採用LGPL,這意味著我們只使用著其中的一個策略,而忽略了另一個. 所以現在我們在尋求更多以普通的GPL許可證形式發布的庫.
私人軟體開發人員有金錢上的優勢;自由軟體開發人員需要相互之間利用各自的優勢.對一個庫採用普通的GPL對自由軟體開發人員的優勢要大於對私人軟體開發人員: 他們可以使用的庫對於私人軟體開發人員是不可利用的.
使用普通的GPL並不是對於所有的庫都有好處.在某些情況下更有理由來使用LGPL.最常見的情況就是當一個自由庫的特性可以很容易地被私人軟體以其他可替代庫來實現.在這種情況下,庫不能給與自由軟體任何特別的優勢,因而最好還是為LGPL發布該庫.
這也就是為什麼我們為GNU C 庫選擇LGPL.總之,有很多的其他C庫;我們使用GPL發布該庫,將迫使私人軟體開發人員不得不使用其它的庫--對他們來說這不成問題,而我們則有了麻煩.
然而,當一個庫所提供的功能是非常獨特的時候,如GNU Readline, 情況就大不一樣了. Readline庫可實現輸入編輯和記錄互動式程式操作,這在別處通常是不可多得. 在GPL下發布它並限制它只能在自由程式中使用, 這我們的社團是一個重要的促進.至少今天某個應用程式之所以是自由軟體,只是因為它必需要用到Readline.
如果我們收集一些強大的、私人軟體中沒有相類似東西的、採用GPL的庫,它們將提供一系列有用的模組用於新的自由軟體的構造. 這對於將來的自由軟體開發將是一個顯著的優勢, 一些項目將為了使用這些庫而考慮使軟體自由化. 大學的項目是易於被影響的;而且今天,隨著某些公司開始考慮使軟體自由化, 甚至一些商業項目也會由此受到影響.
私人軟體開發人員試圖否認自由競爭的重要性, 他們會拚命說服作者不要將庫使用GPL來發布. 例如,他們會呼籲利己主義,信誓旦旦地說如果我們讓他們在私人軟體產品中使用代碼,將有“更多的使用者”用到該庫. 流行是一種誘惑,它使一個庫開發人員傾向於相信這種觀點:社會首先需要的是促進一種庫的流行;.
但是我們不應該聽從這種誘惑,因為如果我們聯合起來,我們可以做得更好.我們這些自由軟體開發人員應該相互支援. 通過發布只能為自由軟體使用的庫,我們可以互相協助,使彼此的自由軟體包優於其它的私人替代品. 整個自由軟體運動將會有更多的機會,因為自由軟體作為一個整體將會在競爭中表現更佳.
因為"LGPL(Library GPL)"的稱呼傳達了關於這一問題的錯誤觀點,我們計劃將稱呼改為"次級GPL(Lesser GPL)".事實上要更換名稱要花一定的時間,但你不必再等--你可以現在就發布應用GPL許可證的庫.
從上面看起來PySide的前景還想比PyQt更強大,而且對商業開發來講,PySide是更好的選擇,當然對於我個人來說,區別不大。不過我在想,諾基亞都倒閉了,PySide還會像他說的那樣迅猛發展嗎。果然網友的一個文章印證了我的猜測:
早上一爬起來,就看到一個不好的訊息,Matti Airas 在PySide郵件清單 中說:
Currently, the vast majority of the PySide core development is done by the OpenBossa INdT team in Brazil and funded by Nokia‘s MeeGo Computers team - the PySide project has internally been an enabler for the MeeGo 1.2 Harmattan Python project. Unfortunately, the Nokia N9 is the only MeeGo (Harmattan) phone to be published by Nokia, and Nokia‘s MeeGo team is being ramped down already in the near future. Because of this, the Nokia MeeGo funding for PySide is slated to end after this year, and I have also failed to find a new sponsor for the project within Nokia.
上周(8月18)剛過完兩周歲生日的PySide,一直以來是由位於巴西的OpenBossa INdT(Nokia Technology Institute)小組在 Nokia 的 MeeGo 電腦小組的資金資助下進行的。
不幸的是,Nokia的MeeGo小組似乎已經自身難保了,他們對PySide的支援預計將於明年結束。PySide新的支援者目前尚未找到。
Matti Airas 相信,即使沒有Nokia這個接生婆的繼續協助,PySide項目應該也有存活並繼續長大的能力。但這意味著,社區將在專案規劃和實際開發中都要負擔起領導的責任。
其實單從PySide和PyQt的更新速度上我就可以抉擇是選擇哪一個。再簡單說說PyQt吧,分PyQt4和PyQt5兩個版本,前者是基於Qt4.x的,支援Python。後者是基於Qt5.x的,支援Python3。官網雖然只有C++版本Qt文檔,但還是很全面的。而且安裝包裡帶了很多examples,對新手來說作用還是很大的。不過現在啟動examples會出現問題,5.3.1版本的能啟動起examples,但是launch example的時候會報錯:
更新了顯卡驅動也不行。後來升級到5.5.1examples直接啟動不起來,鬧心。examples的啟動程式是"C:\Python34\Lib\site-packages\PyQt5\examples\qtdemo.pyw"
明天再繼續研究吧。不過今天突然發現python官網又能開啟了,不用再特意FQ了。雖然Google被封但是國內還有鏡像網站能上去,但是有些國外的技術網站還是上不去,早晚還得FQ。
Python GUI漫談