Cocotwp 2019-11-30
Python作为当今世界最受欢迎的编程语言,近两年因人工智能和大数据的火爆,大有超越Java之势,得到众多开发者拥护。因为Python开发者迟早都会用到图形用户界面开发应用。所以,今天特意汇总13个Python GUI库,希望对看到的你有所帮助。
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.
Dabo是一个基于wxpython的再封装库。它提供数据库访问,商业逻辑以及用户界面。作为一个跨平台应用开发框架,它使用Python语言开发,用于建立以数据为中心的应用程序,很多小伙伴用它来建立不连接数据库的应用。
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()
Kivy是一款用于跨平台快速应用开发的开源框架,只需编写一套代码便可轻松运行于各大移动平台和桌面上,像Android,iOS,Linux,OS X和Windows等。作为用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件,Kivy采用Python和Cython编写,虽然它在国内鲜为人知,但因容易上手加之样式分离模式,在国外一度超越老牌GUI工具PyQt。
它使用Python作为脚本语言,并用C++编写,是一款允许程序员、媒体艺术家和设计师快速开发媒体的应用程序。libavg这四个特性你需要了解下,计时器、事件处理系统、日志支持和以Python变量的形式显示元素。
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()
Pyforms是一个Python 3跨环境框架,旨在提高开发效率。这个库在Python中提供了一个API,用于开发可以在Windows GUI模式、Web模式或终端模式下执行的应用程序。
此外,Pyforms还是一个Python2.7.x和3.x交叉环境框架,用于开发图形用户界面应用程序,它以最小的工作量促进模块化软件设计和代码重用。
PyGObject是GTK+ 和 GStreamer 的 Python 绑定,完善 Python 3 支持。通过全新的 gobject-introspection 技术实现模块化动态链接,免去过去等待特定 GObject 的 Python API 的过程。使用PyGObject,不仅能为GNOME项目编写Python应用程序,同时还可以使用GTK+编写Python应用程序。
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模块提供用于数据库的类。
PySide是跨平台的应用程序框架Qt的Python绑定版本,可以使用Python语言和Qt进行界面开发。在2009年8月,PySide首次发布。提供和PyQt类似的功能,并相容 API。但与 PyQt 不同处是使用LGPL授权。编写PySide桌面应用时要先导入QtCore和QtGui,因为这些类包含了应用中的主要功能。
PyAutoGUI是一个面向对象的跨平台纯Python的GUI自动化工具,使用者可以用程序自动控制鼠标和键盘操作,利用它可以实现所有GUI自动化,无需机械性操作。
想让鼠标移动到屏幕中央吗?试试下面的代码吧!
In [ ]:import pyautoguiscreenWidth, screenHeight = pyautogui.size()pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
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()
PyGTK让你用Python轻松创建具有图形用户界面的程序。底层的GTK+提供了各式的可视元素和功能。如果需要,你能开发在GNOME桌面系统运行的功能完整的软件。它不仅具有跨平台特性,还能不加修改地稳定的运行在各个操作系统之上,像Linux,Windows,MacOS。除了简单易用和快速的原型开发能力外,PyGTK还有一流的处理本地化语言的独特功能。
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面,具有人机交互性、美观性、实用性和技术性。以上13种实用又好用的GUI框架,涵盖多数编程学习者和开发者的需要,小伙伴可以根据自己的需要选择性使用。