你知道嘛
由于Python/ target=_blank class=infotextkey>Python越來(lái)越受歡迎,并得到廣泛采用,它將成為2020年流行起來(lái)的編程語(yǔ)言。在牢固掌握Python編程基礎(chǔ)之后,初學(xué)者面臨的下一個(gè)挑戰(zhàn)是構(gòu)建用戶(hù)界面。幸運(yùn)的是,有很多Python框架專(zhuān)門(mén)幫助開(kāi)發(fā)人員構(gòu)建令人驚嘆但高度直觀的用戶(hù)界面,以適應(yīng)程序應(yīng)用。
本文的目的是幫助那些正在努力尋找用Python中合適框架框來(lái)架構(gòu)建交互式GUI的的人。
什么是GUI
圖形用戶(hù)界面(GUI)是用戶(hù)打開(kāi)應(yīng)用程序或網(wǎng)站時(shí)看到的第一個(gè)東西,并與之交互。擁有一個(gè)良好的GUI能夠幫助你提高平臺(tái)的聲譽(yù)和用戶(hù)數(shù)量。用戶(hù)界面通常包括許多視覺(jué)元素,如圖標(biāo)、按鈕、圖形、顯示文本和其他幾種輸入形式,如復(fù)選框、文本輸入框等。
所有這些元素的結(jié)合構(gòu)成了你的應(yīng)用程序或網(wǎng)站的用戶(hù)體驗(yàn)的重要部分。這些視覺(jué)元素的輸入可以來(lái)自通常的媒介,如鍵盤(pán)、鼠標(biāo)和觸摸屏。
最佳GUI Python框架
專(zhuān)注于完善用戶(hù)界面是一件好事,但同樣重要的是提供最好的用戶(hù)體驗(yàn),在不投入過(guò)多資源的情況下交付它也同樣重要。Python有大量用于開(kāi)發(fā)GUI的框架,我們?cè)谙旅娴牧斜碇惺占艘恍┳盍餍械腜ython GUI框架。
- PyQt5
PyQt包是圍繞Qt框架構(gòu)建的,Qt框架是一個(gè)跨平臺(tái)框架,用于為各種平臺(tái)創(chuàng)建大量應(yīng)用程序。
與Qt5框架類(lèi)似,PyQt5也是完全跨平臺(tái)的。通過(guò)利用PyQt5的強(qiáng)大功能,開(kāi)發(fā)人員可以為windows、mac、linux、IOS、Android等平臺(tái)構(gòu)建應(yīng)用程序。
在創(chuàng)建gui時(shí),PyQt5提供了令人印象深刻的QtGui和QtDesigner模塊,它們提供了許多可視化元素,開(kāi)發(fā)人員可以通過(guò)簡(jiǎn)單的拖放實(shí)現(xiàn)這些元素。當(dāng)然,也存在通過(guò)代碼創(chuàng)建這些元素的選項(xiàng),允許您輕松創(chuàng)建小規(guī)模和大規(guī)模的應(yīng)用程序。Python的模塊化以擴(kuò)展的形式延伸到PyQt5,為您提供了比GUI構(gòu)建多得多的特性。如果您喜歡這里看到的內(nèi)容,可以使用“pip install PyQt5”命令嘗試一下PyQt5。
2. Tkinter
Tkinter通常被大多數(shù)Python開(kāi)發(fā)人員稱(chēng)為首選GUI工具包,創(chuàng)建Tkinter是為了給現(xiàn)代開(kāi)發(fā)人員提供Tk GUI工具包的標(biāo)準(zhǔn)接口和它的Python綁定。在Tkinter的世界里,我們所熟悉的大多數(shù)可視化元素都被稱(chēng)為小部件,每個(gè)小部件都提供了不同級(jí)別的可定制性。
Tkinter被整合到當(dāng)前所有主要操作系統(tǒng)的Python安裝程序中,并提供了一系列我們確信你一定熟悉的常用元素。下面列出了一些視覺(jué)元素:
●Frame:為你的應(yīng)用程序提供一個(gè)結(jié)構(gòu)
●按鈕:用于獲取用戶(hù)的輸入
●復(fù)選按鈕:用于進(jìn)行選擇
●標(biāo)簽:用于顯示文本信息
●文件對(duì)話(huà)框:用于在應(yīng)用程序中上傳或下載文件
●畫(huà)布:為繪制圖形和情節(jié)提供空間
3. Kivy
Kivy是用Python和Cython混合編寫(xiě)的,它是一個(gè)開(kāi)源GUI框架,用于構(gòu)建一些最直觀的用戶(hù)界面,包括實(shí)現(xiàn)自然用戶(hù)界面(NUI)的多點(diǎn)觸摸應(yīng)用程序。
有了Kivy,界面設(shè)計(jì)師可以編寫(xiě)一次代碼并部署到多個(gè)平臺(tái),而內(nèi)置的OpenGL ES 2支持允許他們使用現(xiàn)代和強(qiáng)大的圖形和設(shè)計(jì)技術(shù)。Kivy GUI框架在現(xiàn)實(shí)世界中最常見(jiàn)的用法可以在我們的Android和iOS應(yīng)用程序中看到。該框架的其他廣泛實(shí)現(xiàn)可以在Linux、Windows、樹(shù)莓派和Mac OS設(shè)備的用戶(hù)界面中看到。按照網(wǎng)站上提供的安裝說(shuō)明,您可以輕松地將這個(gè)框架添加到您的環(huán)境中。
4. wxPython
wxPython本質(zhì)上是一個(gè)Python擴(kuò)展模塊,充當(dāng)wxWidgets API的包裝器。wxPython允許Python開(kāi)發(fā)人員創(chuàng)建不給應(yīng)用程序增加額外開(kāi)銷(xiāo)的本地用戶(hù)界面。wxPython的跨平臺(tái)功能允許部署到Windows、Mac OS、Linux和基于unix的系統(tǒng)上,幾乎不需要做任何修改。
開(kāi)發(fā)人員二人組后來(lái)發(fā)布了Project Phoenix,作為wxPython的繼承者,并支持Python 3。它是從頭構(gòu)建的,以提供wxWidgets工具包的更簡(jiǎn)潔的Python實(shí)現(xiàn)。如果您有興趣嘗試這個(gè)框架,您會(huì)很高興地知道最新的更新v4.1.1已經(jīng)將它添加到Python包索引中。隨著PyPI的加入,“pip install wxPython==4.1.1”命令的下載變得更加流暢。
5. Libavg
由Ulrich Von Zadow用c++編寫(xiě)的開(kāi)源Libavg GUI框架使用Python作為腳本語(yǔ)言,是為現(xiàn)代觸屏設(shè)備開(kāi)發(fā)用戶(hù)界面的最佳框架之一。圖像密集型的部分,如視頻解碼、視覺(jué)效果和合成,都是通過(guò)OpenGL和GPU著色器實(shí)現(xiàn)的硬件加速來(lái)處理的,以提供平滑和豐富的圖像視覺(jué)效果。
libavg支持大多數(shù)常用的觸摸驅(qū)動(dòng)程序,并提供一系列功能,如攝像頭支持,文本對(duì)齊,動(dòng)畫(huà)支持,GPU效果,如模糊,陰影,等等。還有一個(gè)高級(jí)的屏幕布局引擎,為視覺(jué)元素提供旋轉(zhuǎn)、縮放、裁剪、混合模式和其他操作技術(shù)。
libavg是用c++構(gòu)建的,以確保難以置信的快速執(zhí)行時(shí)間,希望應(yīng)用程序獲得絕對(duì)最佳性能的開(kāi)發(fā)人員不會(huì)對(duì)它失望。你可以在他們網(wǎng)站的下載頁(yè)面上找到安裝說(shuō)明。
6. PysimpleGUI
這個(gè)框架的名稱(chēng)難道不是完全暴露了它要做什么嗎?回到這個(gè)主題,那些剛開(kāi)始使用Python應(yīng)用程序開(kāi)發(fā)的人可能會(huì)在一開(kāi)始發(fā)現(xiàn)很多Python GUI框架令人生畏。Mike B.在2018年創(chuàng)建了PySimpleGUI,使Python新手更容易進(jìn)入GUI開(kāi)發(fā),而無(wú)需花費(fèi)太多時(shí)間進(jìn)入可用的更高級(jí)GUI開(kāi)發(fā)選項(xiàng)的復(fù)雜性。
PySimpleGUI采用了4個(gè)廣泛流行的Python GUI框架,包括Qt、Tkinter、WxPython和Remi,并通過(guò)實(shí)現(xiàn)大多數(shù)樣板代碼降低了它們的難度。結(jié)果呢?
初學(xué)者可以選擇自己喜歡的GUI框架,并且可以輕松訪(fǎng)問(wèn)隨之而來(lái)的各種視覺(jué)元素,從而創(chuàng)建直觀的用戶(hù)界面,而無(wú)需深入研究框架。這并不意味著經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員只能訪(fǎng)問(wèn)他們喜歡的框架的簡(jiǎn)化版本,獲得完整的本地功能的選項(xiàng)仍然存在。
7. PyForms
PyForms GUI框架是一個(gè)Python軟件層,其核心是廣泛著名的Windows窗體,它允許開(kāi)發(fā)人員創(chuàng)建一些驚人的、高度交互的用戶(hù)界面。PyForms的跨平臺(tái)功能使開(kāi)發(fā)人員可以更容易地為多個(gè)平臺(tái)創(chuàng)建應(yīng)用程序,只需對(duì)代碼進(jìn)行少量更改,消除了不必要的慢化。PyForms提供了幾個(gè)流行的以圖形為中心的庫(kù)的實(shí)例,如PyQt、OpenGL等,以幫助開(kāi)發(fā)人員為他們的應(yīng)用程序創(chuàng)建用戶(hù)界面。
PyForms庫(kù)分為3個(gè)不同的部分,包括PyForms- gui、PyForms- web和PyForms-終端。每一層都允許在Web、終端和Windows GUI中執(zhí)行PyForms應(yīng)用程序。通過(guò)對(duì)模塊化的關(guān)注,PyForms變得非常適合快速創(chuàng)建原型,它還可以縮短應(yīng)用程序后期階段的維護(hù)工作。安裝是通過(guò)“pip install pyforms”命令來(lái)處理的,該命令會(huì)添加所有這三個(gè)庫(kù),或者如果您想單獨(dú)使用這些庫(kù),也可以這樣做。
8. Wax
還記得我們前面討論過(guò)的wxPython框架嗎?就像wxPython是wxWidgets GUI工具包的包裝器一樣,wax GUI框架是wxPython更加友好的包裝器。像其他流行的框架一樣,wax也是作為Python的擴(kuò)展模塊實(shí)現(xiàn)的。對(duì)于那些想知道的人來(lái)說(shuō),是的,wax支持構(gòu)建跨平臺(tái)應(yīng)用程序。
wax背后的理念是通過(guò)移除wxPython的底層功能,為應(yīng)用程序開(kāi)發(fā)人員提供更簡(jiǎn)單的訪(fǎng)問(wèn)Python元素和對(duì)象的方式來(lái)構(gòu)建gui。由于底層平臺(tái)wxWindows非常高效,所以wax GUI框架在使用平臺(tái)提供的本機(jī)小部件時(shí),具有相同的效率和速度。
9. PySide2
PySide2是由提供給我們廣泛流行的應(yīng)用開(kāi)發(fā)框架Qt的同一家公司構(gòu)建的,仔細(xì)觀察,你會(huì)遇到術(shù)語(yǔ)“Qt for Python Project”,這只不過(guò)是移植PySide來(lái)支持Qt5的任務(wù),而框架本身現(xiàn)在被稱(chēng)為PySide2。
它現(xiàn)在被稱(chēng)為Qt for Python項(xiàng)目的官方跨平臺(tái)Python模塊。該項(xiàng)目為Python開(kāi)發(fā)人員提供了一個(gè)經(jīng)過(guò)驗(yàn)證的工具和庫(kù)的集合,用于快速和靈活地創(chuàng)建令人驚嘆的用戶(hù)界面工具,Qt5和以上所提供的。
PySide2還為尋找它的開(kāi)發(fā)人員提供了強(qiáng)大的社區(qū)支持。PySide2的文檔部分被劃分為教程、視頻指南、示例、API文檔等區(qū)域,以廣泛地涵蓋框架中包含的各種主題。AMD的Radeon控制軟件、奔馳Mini Cooper的駕駛艙娛樂(lè)解決方案和TomTom的導(dǎo)航系統(tǒng)都是在Qt上運(yùn)行的高科技和現(xiàn)代的例子。
10. PyGUI
Python GUI項(xiàng)目,或者更常見(jiàn)的PyGUI框架,是一個(gè)簡(jiǎn)單的API,它允許開(kāi)發(fā)人員使用Python應(yīng)用程序的本地元素創(chuàng)建用戶(hù)界面。作為一個(gè)相當(dāng)輕量級(jí)的API, PyGUI框架在Python應(yīng)用程序和目標(biāo)平臺(tái)之間添加的額外代碼很少。PyGUI目前支持為基于unix的系統(tǒng)、Windows機(jī)器和Mac OS設(shè)備創(chuàng)建應(yīng)用程序。
為了使開(kāi)發(fā)人員更容易地進(jìn)行應(yīng)用程序開(kāi)發(fā),整個(gè)庫(kù)的文檔都是用Python編寫(xiě)的,從而不需要參考其他GUI庫(kù)。PyGUI可用于Python 2和3,是的,它確實(shí)支持?jǐn)U展,讓你使用OpenGL和GTK。