Python GUI漫谈
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了。雖然谷歌被封但是國內還有鏡像網站能上去,但是有些國外的技術網站還是上不去,早晚還得FQ。
轉載于:https://www.cnblogs.com/pyjogger/p/4676859.html
總結
以上是生活随笔為你收集整理的Python GUI漫谈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [架构]--高并发问题及解决方案
- 下一篇: 我的Android进阶之旅------A