日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python GUI漫谈

發(fā)布時(shí)間:2025/7/14 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python GUI漫谈 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Windows下面做C++那會(huì)用慣了MFC,對(duì)框架產(chǎn)生了依賴,使用框架雖然占用了很多不必要的系統(tǒng)資源,也拖慢了程序的運(yùn)行效率,但是做個(gè)demo什么的往框框里填點(diǎn)代碼就可以的確很方便。而且對(duì)我來(lái)說(shuō),這樣比純手寫(xiě)更規(guī)整,哪個(gè)部分應(yīng)該填什么不應(yīng)該填什么系統(tǒng)會(huì)幫你甄別,避免了純手打的隨意性。今天上網(wǎng)隨便搜搜Python的帖子,想起了以前掃過(guò)一眼的PyQt。其實(shí)我對(duì)框架最基本的要求就是當(dāng)我需要做UI的時(shí)候一定要簡(jiǎn)單實(shí)用,當(dāng)然,最好是有很強(qiáng)的擴(kuò)展性,這樣以后真需要玩的時(shí)候也有得玩。可能個(gè)人水平問(wèn)題,用過(guò)python標(biāo)配的TKinter,寫(xiě)出來(lái)的東西太丑陋,而且控件位置很難控制。也有的人推薦wxPython,可惜下載頁(yè)上提示目前只支持Python2.7。順便吐槽一下,Python3都出來(lái)這么久了,為什么原來(lái)很多好用的工具都沒(méi)跟進(jìn)。其實(shí)棄用wxPython的原因還有有人說(shuō)bug多,文檔資源不豐富,其實(shí)我對(duì)文檔這種東西還是很依賴的。用MFC的時(shí)候,文檔全面細(xì)致到讓我欽佩,很多時(shí)候做個(gè)demo照扒例子就夠用,學(xué)點(diǎn)什么東西很容易上手。其實(shí)前面也說(shuō)了,我需要的是框架,不只是一些UI層面的東西,而TKinter和wxPython僅僅是GUI上的一些類庫(kù),因而又回到了PyQt這個(gè)似乎更全面的類庫(kù)上來(lái)。先來(lái)看一下python頁(yè)面對(duì)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).再來(lái)看一下百度對(duì)Qt的描述:

Qt是一個(gè)1991年由奇趣科技開(kāi)發(fā)的跨平臺(tái)C++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架。它既可以開(kāi)發(fā)GUI程序,也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣?#xff0c;使用特殊的代碼生成擴(kuò)展(稱為元對(duì)象編譯器(Meta Object Compiler, moc))以及一些宏,易于擴(kuò)展,允許組件編程。2008年,奇趣科技被諾基亞公司收購(gòu),QT也因此成為諾基亞旗下的編程語(yǔ)言工具。2012年,Qt被Digia收購(gòu)。2014年4月,跨平臺(tái)集成開(kāi)發(fā)環(huán)境Qt Creator 3.1.0正式發(fā)布,實(shí)現(xiàn)了對(duì)于iOS的完全支持,新增WinRT、Beautifier等插件,廢棄了無(wú)Python接口的GDB調(diào)試支持,集成了基于Clang的C/C++代碼模塊,并對(duì)Android支持做出了調(diào)整,至此實(shí)現(xiàn)了全面支持iOS、Android、WP。
Qt是1991年奇趣科技開(kāi)發(fā)的一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所有功能。Qt很容易擴(kuò)展,并且允許真正地組件編程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫(kù)和 Windows 平臺(tái)上的 MFC,OWL,VCL,ATL 是同類型的東西。

好了,看到這里我滿意了,因?yàn)樗f(shuō)是與MFC是同類型的東西,看來(lái)是沒(méi)找錯(cuò)。

再回到前面,我不得不承認(rèn),我有強(qiáng)迫癥,因?yàn)槲易⒁獾匠隽薖yQt外,還有另外一個(gè)用python封裝Qt的東西,PySide,它跟PyQt到底誰(shuí)更好呢?python主頁(yè)對(duì)PySide的描述簡(jiǎn)簡(jiǎn)單單,沒(méi)有發(fā)現(xiàn)什么特別的地方。在來(lái)到PySide的wiki頁(yè)面,我看到The latest version of PySide is 1.2.2 released on April 25, 2014 and provides access to the complete Qt 4.8 framework.因?yàn)槭浅鯇W(xué)python,python2和python3對(duì)我來(lái)說(shuō)是一樣的陌生。雖然網(wǎng)上關(guān)于python2的項(xiàng)目和文檔非常多,但python3替代python2是大勢(shì)所趨,只是時(shí)間問(wèn)題。所以既然是初學(xué),就想省去之后再?gòu)?過(guò)度到3的功夫。當(dāng)然,基于現(xiàn)在python3的項(xiàng)目和文檔非常少,從python3開(kāi)始學(xué)起路就會(huì)漫長(zhǎng)一點(diǎn)。基于這種思路,我希望我所用到的東西都是最新的,能跟上形勢(shì)的,Qt最新版本已經(jīng)更新到5.x,而PySide目前才跟到4.8,而且上一次的更新日期是14年,網(wǎng)上也有帖子說(shuō)PySide對(duì)Python3目前也只是部分支持,所以基本就放棄了對(duì)PySide的期望。不過(guò)基于PySide是PyQt強(qiáng)有力的對(duì)上,還是扒了一下網(wǎng)友對(duì)PyQt與PySide的比較:

今天在 Python-CN 郵件組里看到討論 PyQt 和 Nokia PySide 的問(wèn)題。

PyQt 是商業(yè)及 GPL 的版權(quán), 而 PySide 是 LGPL.

?

也就是如果使用 PyQt 做商業(yè)應(yīng)用的話就需要付費(fèi), 而使用 Nokia 的 PySide 則不需要。

?

題外話:

自從 Nokia 收購(gòu)了 Qt, 一直大力推廣 Qt。前天發(fā)布的最新的 PySide 已經(jīng)支持 MS Windows,?
而且是 LGPL 的。?

相信 PySide 未來(lái)會(huì)比 PyQt 更強(qiáng)大易用。按照 Nokia 的說(shuō)法是會(huì)更加 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.

?

?

// 以下為在網(wǎng)上搜索的結(jié)果


LGPL概念?

  LGPL 是 GNU Lesser General Public License (GNU 寬通用公共許可證)的縮寫(xiě)形式,舊稱 GNULibrary General Public License (GNU 庫(kù)通用公共許可證),在寬松程度上與 BSD, Apache,XFree86 許可證相似。


  GPL(General Public License)和LGPL( Lesser General Public License)是GNU的兩種License。越來(lái)越多的自由軟件(Free Software)使用GPL作為其授權(quán)聲明,如果對(duì)GPL一點(diǎn)都不了解,有可能在使用自由軟件時(shí)違反了GPL的授權(quán)。如果是個(gè)人或不正規(guī)的公司倒也無(wú)所謂,但如果是有規(guī)模的公司,恐怕會(huì)有被起訴的風(fēng)險(xiǎn)。


  在使用Log4cpp時(shí)我想到了授權(quán)的事情,于是有了興趣對(duì)GPL做一下了解。這是必要的,因?yàn)楣疽簿S護(hù)了一個(gè)驗(yàn)證過(guò)的自由軟件庫(kù),里面包含的自由軟件除了功能上是可靠的,另外就是一定可以被私有使用的,否則后果很嚴(yán)重。


  Log4cpp最初的版本使用GPL作為授權(quán)聲明的,在0.2.1版本以后改用更為寬松的 LGPL。LGPL最初是Library GPL的縮寫(xiě),后來(lái)改稱作Lesser GPL,即為更寬松的GPL。當(dāng)一個(gè)自由軟件使用GPL聲明時(shí),該軟件的使用者有權(quán)重新發(fā)布、修改該軟件,并得到該軟件的源代碼;但只要使用者在其程序中使用了該自由軟件,或者是使用修改后的軟件,那么使用者的程序也必須公布其源代碼,同時(shí)允許別人發(fā)布、修改。也就是說(shuō),使用GPL聲明下的的自由軟件開(kāi)發(fā)出來(lái)的新軟件也一定是自由軟件。


  LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟件開(kāi)發(fā)商的支持而提出的。與 GPL的最大不同是,可以私有使用LGPL授權(quán)的自由軟件,開(kāi)發(fā)出來(lái)的新軟件可以是私有的而不需要是自由軟件。所以任何公司在使用自由軟件之前應(yīng)該保證在 LGPL或其它GPL變種的授權(quán)下。
編輯本段

Richard Stallman關(guān)于GPL和LGPL的論述
?

  為什么你不應(yīng)該使用LGPL發(fā)布你的下一個(gè)庫(kù)


  GNU計(jì)劃在使用庫(kù)時(shí)有兩個(gè)首要的許可證.一個(gè)是GNU LGPL(庫(kù)GPL);另一個(gè)是普通的GNU GPL.選擇不同的許可有很大的不同:選擇LGPL允許在私有程序中使用該庫(kù);選擇普通的GPL則只允許在自由軟件中使用它.


  關(guān)于哪一種許可證對(duì)指定的庫(kù)是最好的這一問(wèn)題實(shí)際上是一個(gè)策略問(wèn)題,它取決于實(shí)際情況.當(dāng)前,大多數(shù)的GNU庫(kù)被采用LGPL,這意味著我們只使用著其中的一個(gè)策略,而忽略了另一個(gè). 所以現(xiàn)在我們?cè)趯で蟾嘁云胀ǖ腉PL許可證形式發(fā)布的庫(kù).


  私有軟件開(kāi)發(fā)者有金錢(qián)上的優(yōu)勢(shì);自由軟件開(kāi)發(fā)者需要相互之間利用各自的優(yōu)勢(shì).對(duì)一個(gè)庫(kù)采用普通的GPL對(duì)自由軟件開(kāi)發(fā)者的優(yōu)勢(shì)要大于對(duì)私有軟件開(kāi)發(fā)者: 他們可以使用的庫(kù)對(duì)于私有軟件開(kāi)發(fā)者是不可利用的.


  使用普通的GPL并不是對(duì)于所有的庫(kù)都有好處.在某些情況下更有理由來(lái)使用LGPL.最常見(jiàn)的情況就是當(dāng)一個(gè)自由庫(kù)的特性可以很容易地被私有軟件以其他可替代庫(kù)來(lái)實(shí)現(xiàn).在這種情況下,庫(kù)不能給與自由軟件任何特別的優(yōu)勢(shì),因而最好還是為L(zhǎng)GPL發(fā)布該庫(kù).


  這也就是為什么我們?yōu)镚NU C 庫(kù)選擇LGPL.總之,有很多的其他C庫(kù);我們使用GPL發(fā)布該庫(kù),將迫使私有軟件開(kāi)發(fā)者不得不使用其它的庫(kù)--對(duì)他們來(lái)說(shuō)這不成問(wèn)題,而我們則有了麻煩.


  然而,當(dāng)一個(gè)庫(kù)所提供的功能是非常獨(dú)特的時(shí)候,如GNU Readline, 情況就大不一樣了. Readline庫(kù)可實(shí)現(xiàn)輸入編輯和記錄交互式程序操作,這在別處通常是不可多得. 在GPL下發(fā)布它并限制它只能在自由程序中使用, 這我們的社團(tuán)是一個(gè)重要的促進(jìn).至少今天某個(gè)應(yīng)用程序之所以是自由軟件,只是因?yàn)樗匦枰玫絉eadline.


  如果我們收集一些強(qiáng)大的、私有軟件中沒(méi)有相類似東西的、采用GPL的庫(kù),它們將提供一系列有用的模塊用于新的自由軟件的構(gòu)造. 這對(duì)于將來(lái)的自由軟件開(kāi)發(fā)將是一個(gè)顯著的優(yōu)勢(shì), 一些項(xiàng)目將為了使用這些庫(kù)而考慮使軟件自由化. 大學(xué)的項(xiàng)目是易于被影響的;而且今天,隨著某些公司開(kāi)始考慮使軟件自由化, 甚至一些商業(yè)項(xiàng)目也會(huì)由此受到影響.


  私有軟件開(kāi)發(fā)者試圖否認(rèn)自由競(jìng)爭(zhēng)的重要性, 他們會(huì)拼命說(shuō)服作者不要將庫(kù)使用GPL來(lái)發(fā)布. 例如,他們會(huì)呼吁利己主義,信誓旦旦地說(shuō)如果我們讓他們?cè)谒接熊浖a(chǎn)品中使用代碼,將有“更多的用戶”用到該庫(kù). 流行是一種誘惑,它使一個(gè)庫(kù)開(kāi)發(fā)者傾向于相信這種觀點(diǎn):社會(huì)首先需要的是促進(jìn)一種庫(kù)的流行;.


  但是我們不應(yīng)該聽(tīng)從這種誘惑,因?yàn)槿绻覀兟?lián)合起來(lái),我們可以做得更好.我們這些自由軟件開(kāi)發(fā)者應(yīng)該相互支持. 通過(guò)發(fā)布只能為自由軟件使用的庫(kù),我們可以互相幫助,使彼此的自由軟件包優(yōu)于其它的私有替代品. 整個(gè)自由軟件運(yùn)動(dòng)將會(huì)有更多的機(jī)會(huì),因?yàn)樽杂绍浖鳛橐粋€(gè)整體將會(huì)在競(jìng)爭(zhēng)中表現(xiàn)更佳.


  因?yàn)?#34;LGPL(Library GPL)"的稱呼傳達(dá)了關(guān)于這一問(wèn)題的錯(cuò)誤觀點(diǎn),我們計(jì)劃將稱呼改為"次級(jí)GPL(Lesser GPL)".事實(shí)上要更換名稱要花一定的時(shí)間,但你不必再等--你可以現(xiàn)在就發(fā)布應(yīng)用GPL許可證的庫(kù).


從上面看起來(lái)PySide的前景還想比PyQt更強(qiáng)大,而且對(duì)商業(yè)開(kāi)發(fā)來(lái)講,PySide是更好的選擇,當(dāng)然對(duì)于我個(gè)人來(lái)說(shuō),區(qū)別不大。不過(guò)我在想,諾基亞都倒閉了,PySide還會(huì)像他說(shuō)的那樣迅猛發(fā)展嗎。果然網(wǎng)友的一個(gè)帖子印證了我的猜測(cè):

早上一爬起來(lái),就看到一個(gè)不好的消息,Matti Airas 在PySide郵件列表?中說(shuō):

  • 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)剛過(guò)完兩周歲生日的PySide,一直以來(lái)是由位于巴西的OpenBossa INdT(Nokia Technology Institute)小組在 Nokia 的 MeeGo 計(jì)算機(jī)小組的資金資助下進(jìn)行的。

不幸的是,Nokia的MeeGo小組似乎已經(jīng)自身難保了,他們對(duì)PySide的支持預(yù)計(jì)將于明年結(jié)束。PySide新的支持者目前尚未找到。

Matti Airas 相信,即使沒(méi)有Nokia這個(gè)接生婆的繼續(xù)幫助,PySide項(xiàng)目應(yīng)該也有存活并繼續(xù)長(zhǎng)大的能力。但這意味著,社區(qū)將在項(xiàng)目規(guī)劃和實(shí)際開(kāi)發(fā)中都要負(fù)擔(dān)起領(lǐng)導(dǎo)的責(zé)任。

其實(shí)單從PySide和PyQt的更新速度上我就可以抉擇是選擇哪一個(gè)。再簡(jiǎn)單說(shuō)說(shuō)PyQt吧,分PyQt4和PyQt5兩個(gè)版本,前者是基于Qt4.x的,支持Python。后者是基于Qt5.x的,支持Python3。官網(wǎng)雖然只有C++版本Qt文檔,但還是很全面的。而且安裝包里帶了很多examples,對(duì)新手來(lái)說(shuō)作用還是很大的。不過(guò)現(xiàn)在啟動(dòng)examples會(huì)出現(xiàn)問(wèn)題,5.3.1版本的能啟動(dòng)起examples,但是launch example的時(shí)候會(huì)報(bào)錯(cuò):

更新了顯卡驅(qū)動(dòng)也不行。后來(lái)升級(jí)到5.5.1examples直接啟動(dòng)不起來(lái),鬧心。examples的啟動(dòng)程序是"C:\Python34\Lib\site-packages\PyQt5\examples\qtdemo.pyw"

明天再繼續(xù)研究吧。不過(guò)今天突然發(fā)現(xiàn)python官網(wǎng)又能打開(kāi)了,不用再特意FQ了。雖然谷歌被封但是國(guó)內(nèi)還有鏡像網(wǎng)站能上去,但是有些國(guó)外的技術(shù)網(wǎng)站還是上不去,早晚還得FQ。

轉(zhuǎn)載于:https://www.cnblogs.com/pyjogger/p/4676859.html

總結(jié)

以上是生活随笔為你收集整理的Python GUI漫谈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。