Python作為當今世界最受歡迎的程式語言,近兩年因人工智慧和大資料的火爆,大有超越Java之勢,得到眾多開發者擁護。因為Python開發者遲早都會用到圖形使用者介面開發應用。所以,今天特意彙總13個Python GUI庫,希望對看到的你有所幫助。
01 CEF PythonCEF Python 是 Chrome/Chromium 嵌入式框架 (CEF) 的 Python 繫結版本。這個要感謝 Cython 讓 Python 可以直接使用 c++ 庫。
CEF可以方便的嵌入到 wxPython 和 PyGTK,示例:
wxPython - an example of embedding CEF in wxPython application.
PyGTK - an example of embedding CEF in PyGTK application.
02 DaboDabo是一個基於wxpython的再封裝庫。它提供資料庫訪問,商業邏輯以及使用者介面。作為一個跨平臺應用開發框架,它使用Python語言開發,用於建立以資料為中心的應用程式,很多小夥伴用它來建立不連線資料庫的應用。
03 FlexxFlexx是用於建立圖形使用者介面(GUI)的純Python工具箱,該工具箱使用Web技術進行渲染。作為跨平臺的Python小工具,使用者可以使用Flexx建立桌面應用程式和web應用程式,同時可以將程式匯出到獨立的HTML文件中。
作為GitHub推薦的純Python圖形介面開發工具,它的誕生基於網路已經成為向用戶提供應用程式及互動式科學內容越來越流行的方法,flexx藉助瀏覽器技術,完全藉助Python編寫,加之庫本身比較小,因此只需執行Python和瀏覽器即可輕鬆使用。
flexx需要Python3.5+,適用於pypy。此外還依賴Tornado、PScript、Webruntime及Dialite庫。如果需要執行桌面應用程式,需要按照Firefox或NW.js。
Flexx 使用模組化設計,包含一些子系統:
· ui - UI 部件
· app - 事件迴圈和伺服器
· react - reactive 程式設計
· pyscript - Python to JavaScript transpiler
· webruntime - to launch a runtime
示例程式碼:
from flexx import app, ui, reactclass Example(ui.Widget): def init(self): self.count = 0 with ui.HBox(): self.button = ui.Button(text='Click me', flex=0) self.label = ui.Label(flex=1) @react.connect('button.mouse_down') def _handle_click(self, down): if down: self.count += 1 self.label.text('clicked %i times' % self.count)main = app.launch(Example)app.run()04 Kivy
Kivy是一款用於跨平臺快速應用開發的開源框架,只需編寫一套程式碼便可輕鬆運行於各大移動平臺和桌面上,像Android,iOS,Linux,OS X和Windows等。作為用於開發行動應用程式和其它採用自然使用者介面的多點觸控應用軟體,Kivy採用Python和Cython編寫,雖然它在國內鮮為人知,但因容易上手加之樣式分離模式,在國外一度超越老牌GUI工具PyQt。
05 libavg它使用Python作為指令碼語言,並用C++編寫,是一款允許程式設計師、媒體藝術家和設計師快速開發媒體的應用程式。libavg這四個特性你需要了解下,計時器、事件處理系統、日誌支援和以Python變數的形式顯示元素。
06 TkinterTkinter又稱“Tk介面”,是一個輕量級的跨平臺圖形使用者介面(GUI)開發工具,是Tk圖形使用者介面工具包標準的Python介面,可以執行在大多數Unix平臺、Windows、和Macintosh系統。Tk8.0的後續版本可以實現本地視窗風格,並良好地執行在絕大多數平臺中。
Tkinter 由一定數量的模組組成,包含了對Tk的低階介面模組,低階介面並不會被應用級程式設計師直接使用,通常是一個共享庫(或DLL),但是在一些情況下它也會被Python直譯器靜態連線。除了Tk介面模組,還包含一定數量的Python模組。其中兩個最為重要的模組便是Tkinter本身和Tkconstants的模組。Ttk是指在Python2.x中的GUI模板庫,而在python 3.x中已變為tkinter.ttk。
使用方法(Python3.x):
import tkinter as tkimport tkinter.ttk as ttk
事例程式碼(Python3.x):
import tkinter as tkimport tkinter.ttk as ttkm=tk.Tk()def hi(): print('Hi')ttk.Button(m,text='Hi GUI',command=hi).pack()m.mainloop()07 Pyforms
Pyforms是一個Python 3跨環境框架,旨在提高開發效率。這個庫在Python中提供了一個API,用於開發可以在Windows GUI模式、Web模式或終端模式下執行的應用程式。
此外,Pyforms還是一個Python2.7.x和3.x交叉環境框架,用於開發圖形使用者介面應用程式,它以最小的工作量促進模組化軟體設計和程式碼重用。
08 PyGObjectPyGObject是GTK+ 和 GStreamer 的 Python 繫結,完善 Python 3 支援。通過全新的 gobject-introspection 技術實現模組化動態連結,免去過去等待特定 GObject 的 Python API 的過程。使用PyGObject,不僅能為GNOME專案編寫Python應用程式,同時還可以使用GTK+編寫Python應用程式。
09 PyQtPyQt是一個建立GUI應用程式的工具包。它是Python程式語言和Qt庫的成功融合。Qt庫是目前最強大的庫之一。PyQt是由Phil Thompson 開發,向Python程式設計師提供使用完整Qt應用程式介面的方法。因此,可以使用Python做任何C++能做的事,有沒有很神奇。
PyQt實現了一個Python模組集。它有超過300類,將近6000個函式和方法。它是一個多平臺的工具包,可以執行在所有主要作業系統上,包括UNIX,Windows和Mac。PyQt採用雙許可證,開發人員可以選擇GPL和商業許可。在此之前,GPL的版本只能用在Unix上,從PyQt的版本4開始,GPL許可證可用於所有支援的平臺。
使用之前,你需要了解幾個模組,QtCore模組包含核心的非GUI功能。該模組用於時間、檔案和目錄、各種資料型別、流、網址、MIME型別、執行緒或程序。QtGui模組包含圖形元件和相關的類,例如按鈕、窗體、狀態列、工具欄、滾動條、點陣圖、顏色、字型等。QtNetwork模組包含了網路程式設計的類,這些類允許編寫TCP/IP和UDP的客戶端和伺服器,他們使網路程式設計更簡單,更輕便。QtXml包含使用XML檔案的類,這個模組提供了SAX和DOM API的實現。QtSvg模組提供顯示的SVG檔案的類。可縮放向量圖形(SVG)是一種用於描述二維圖形和圖形應用程式的XML語言。QtOpenGL模組使用OpenGL庫渲染3D和2D圖形,該模組能夠無縫整合Qt的GUI庫和OpenGL庫。QtSql模組提供用於資料庫的類。
10 PySidePySide是跨平臺的應用程式框架Qt的Python繫結版本,可以使用Python語言和Qt進行介面開發。在2009年8月,PySide首次釋出。提供和PyQt類似的功能,並相容 API。但與 PyQt 不同處是使用LGPL授權。編寫PySide桌面應用時要先匯入QtCore和QtGui,因為這些類包含了應用中的主要功能。
11 PyAutoGUIPyAutoGUI是一個面向物件的跨平臺純Python的GUI自動化工具,使用者可以用程式自動控制滑鼠和鍵盤操作,利用它可以實現所有GUI自動化,無需機械性操作。
想讓滑鼠移動到螢幕中央嗎?試試下面的程式碼吧!
In [ ]:import pyautoguiscreenWidth, screenHeight = pyautogui.size()pyautogui.moveTo(screenWidth / 2, screenHeight / 2)12 wxPython
wxPython是Python語言的一套優秀的GUI圖形庫,可以幫助程式設計師輕鬆建立功能強悍的圖形使用者介面的程式。同時wxPython作為優秀的跨平臺GUI庫wxWidgets的Python1.封裝和Python模組的方式提供給使用者的。
wxPython具有非常優秀的跨平臺能力,可以在不修改程式的情況下在多種平臺上執行,支援Win32/Win64、Mac OS X及大多數的Unix系統。
import wxclass App(wx.App): def OnInit(self): frame=wx.Frame(parent=None,title='MyFirstWxPythonApplication') frame.Show() return Trueapp=App()app.MainLoop()13 PyGTK
PyGTK讓你用Python輕鬆建立具有圖形使用者介面的程式。底層的GTK+提供了各式的可視元素和功能。如果需要,你能開發在GNOME桌面系統執行的功能完整的軟體。它不僅具有跨平臺特性,還能不加修改地穩定的執行在各個作業系統之上,像Linux,Windows,MacOS。除了簡單易用和快速的原型開發能力外,PyGTK還有一流的處理本地化語言的獨特功能。
圖形使用者介面(Graphical User Interface,簡稱 GUI,又稱圖形使用者介面)是指採用圖形方式顯示的計算機操作使用者介面,具有人機互動性、美觀性、實用性和技術性。以上13種實用又好用的GUI框架,涵蓋多數程式設計學習者和開發者的需要,小夥伴可以根據自己的需要選擇性使用。