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