三款卓越開(kāi)源Python GUI框架概述
譯文時(shí)至今日,大多數(shù)程序員已經(jīng)準(zhǔn)備好擺脫固有傳統(tǒng),嘗試在自己的程序中構(gòu)建圖形界面。
在Python陣營(yíng)中,進(jìn)行GUI編程并不算特別困難,但卻在起步階段就給我們提供了多種選項(xiàng)。作為通用型語(yǔ)言,Python天然面向多種操作系統(tǒng),這無(wú)疑給圖形界面的開(kāi)發(fā)帶來(lái)了障礙。
幸運(yùn)的是,市面上存在多種方案能夠切實(shí)解決此類(lèi)難題。Windows、Mac與Linux各自擁有一系列原生UI框架,其中相當(dāng)一部分甚至能夠輕松跨越不同操作系統(tǒng)。
不過(guò)在著手設(shè)計(jì)之前,我們需要首先考慮這樣一個(gè)問(wèn)題:為應(yīng)用配備圖形用戶(hù)界面是否必要?如果大家的應(yīng)用本身就包含圖形元素,而且針對(duì)單機(jī)運(yùn)行環(huán)境進(jìn)行了優(yōu)化甚至是針對(duì)性設(shè)計(jì),那么答案顯然是肯定的。
但對(duì)于那些通用型程序,命令行或者Web界面則仍是***方案。命令行在速度、遠(yuǎn)程訪問(wèn)、復(fù)用性、腳本支持能力及控制性方面更具優(yōu)勢(shì),而Click、Cement以及Cliff等庫(kù)的存在也讓程序中的命令行設(shè)計(jì)變得非常輕松。
同樣的,我們可以利用Django、Flask或者Pyramid輕松為程序構(gòu)建Web界面。大家甚至可以使用pywebview這樣的庫(kù)將Web應(yīng)用打包成一套***原生風(fēng)格的GUI窗口。
但是如果大家仍然希望設(shè)計(jì)一套GUI,那么下面就來(lái)一起了解三款卓越的開(kāi)源框架選項(xiàng)。
PyQt
PyQt能夠?qū)崿F(xiàn)高人氣Qt庫(kù),因此如果大家熟知如何利用其它語(yǔ)言進(jìn)行Qt開(kāi)發(fā),那么上手PyQt也不會(huì)出現(xiàn)什么障礙。其能夠讓Python應(yīng)用具備跨平臺(tái)外觀風(fēng)格與使用感受,同時(shí)繼承Qt社區(qū)所帶來(lái)的龐大知識(shí)支持與工具選項(xiàng)。
PyQt同時(shí)提供商用與GPL許可(這一點(diǎn)與Qt項(xiàng)目本身有所不同),感興趣的朋友也可點(diǎn)擊此處了解與PyQt許可相關(guān)的常見(jiàn)問(wèn)題(英文原文)。
Tkinter
如果要為Python選出一款能夠稱(chēng)得上“標(biāo)準(zhǔn)”的GUI工具包,那么答案應(yīng)該是Tkinter。Tkinter是一款以Tcl/Tk為基礎(chǔ)的打包工具,而后者則屬于誕生自上世紀(jì)九十年代初的高人氣圖形界面與語(yǔ)言組合。Tkinter的***優(yōu)勢(shì)在于擁有豐富的資源,其中包括文本與代碼示例以及龐大的用戶(hù)社區(qū)。通過(guò)示例,我們能夠輕松上手這套圖形界面實(shí)現(xiàn)方案。
Tkinter遵循Python許可,同時(shí)基于Tcl/Tk的BSD許可。
WxPython
WxPython 將針對(duì)C++的wxWidgets跨平臺(tái)GUI庫(kù)帶給了Python。WxPython是一套較為現(xiàn)代的方案,其外觀的原生程度高于Tkinter,這主要?dú)w功于其更傾向于針對(duì)不同系統(tǒng)平臺(tái)建立控件成果。其易于上手,同時(shí)擁有快速發(fā)展的開(kāi)發(fā)者社區(qū)。不過(guò)大家需要自行將wxPython與應(yīng)用相綁定,因?yàn)槠錈o(wú)法通過(guò)Python自動(dòng)進(jìn)行安裝。
WxPython采用其父項(xiàng)目wxWindows的庫(kù)許可,這一許可獲得了OSI批準(zhǔn)。
當(dāng)然,這里介紹的并非大家的惟一選項(xiàng)。感興趣的朋友可以點(diǎn)擊此處從Python軟件基金會(huì)的官方維基頁(yè)面中深入了解Python中的GUI編程。
而且除了較為傳統(tǒng)的窗口設(shè)計(jì)思路外,大家有時(shí)候也可能希望建立起特色鮮明的界面成果,特別是在視頻游戲當(dāng)中。對(duì)于此類(lèi)需求,推薦大家嘗試pygame與pyglet。
大家喜愛(ài)的圖形框架有哪些?您又為何做出這樣的選擇?請(qǐng)?jiān)谠u(píng)論中分享您的體會(huì)!
原文鏈接: 三款卓越開(kāi)源Python GUI框架概述




























