11.30 Python開發者必知的13個Python GUI庫,哪個是你的最愛?

Python作為當今世界最受歡迎的編程語言,近兩年因人工智能和大數據的火爆,大有超越Java之勢,得到眾多開發者擁護。因為Python開發者遲早都會用到圖形用戶界面開發應用。所以,今天特意彙總13個Python GUI庫,希望對看到的你有所幫助。

Python開發者必知的13個Python GUI庫,哪個是你的最愛?

01 CEF Python

CEF 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 Dabo

Dabo是一個基於wxpython的再封裝庫。它提供數據庫訪問,商業邏輯以及用戶界面。作為一個跨平臺應用開發框架,它使用Python語言開發,用於建立以數據為中心的應用程序,很多小夥伴用它來建立不連接數據庫的應用。


03 Flexx

Flexx是用於創建圖形用戶界面(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, react
class 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 Tkinter

Tkinter又稱“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模式或終端模式下執行的應用程序。

Python開發者必知的13個Python GUI庫,哪個是你的最愛?

此外,Pyforms還是一個Python2.7.x和3.x交叉環境框架,用於開發圖形用戶界面應用程序,它以最小的工作量促進模塊化軟件設計和代碼重用。

08 PyGObject

PyGObject是GTK+ 和 GStreamer 的 Python 綁定,完善 Python 3 支持。通過全新的 gobject-introspection 技術實現模塊化動態鏈接,免去過去等待特定 GObject 的 Python API 的過程。使用PyGObject,不僅能為GNOME項目編寫Python應用程序,同時還可以使用GTK+編寫Python應用程序。


09 PyQt

PyQt是一個創建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 PySide

PySide是跨平臺的應用程序框架Qt的Python綁定版本,可以使用Python語言和Qt進行界面開發。在2009年8月,PySide首次發佈。提供和PyQt類似的功能,並相容 API。但與 PyQt 不同處是使用LGPL授權。編寫PySide桌面應用時要先導入QtCore和QtGui,因為這些類包含了應用中的主要功能。


11 PyAutoGUI

PyAutoGUI是一個面向對象的跨平臺純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框架,涵蓋多數編程學習者和開發者的需要,小夥伴可以根據自己的需要選擇性使用。



分享到:


相關文章: