GUI(Graphical User Interface)


即图形用户接口,又称图形用户接口。
是指采用图形方式显示的计算机操作用户界面。GUI 是屏幕产品的视觉体验和互动操作部分。

“你的应用程序是否有一个传统的图形用户界面?”对于某些应用程序来说,这个答案是肯定的,如果这个应用程序本质上是图形化的,且在本地机器上做了优化或者是在本地运行,那么就要考虑构建一个桌面图形用户界面。如果是更为通用的程序,那么最好添加命令行或者Web界面。
  命令行拥有很多优势,例如速度、远程访问、可重用性,可脚本化和控制等等。这对用户来说往往会比图形用户界面更为重要。当然,现在有很多库可以支持设计很好的命令行程序,如Click,Cement和Cliff。
  同样的,对于本地运行的程序来说,Web界面也是十分值得考虑的。尤其是当你觉得用户可能希望应用程序能够像Django,Flask或Pyramid这样的项目可以直接远程托管。甚至你可以使用类似pywebview这样的库将Web应用程序包裹在native GUI window。

1. Tkinter

简单介绍:

Tkinter模块是Python的标准GUI工具包。是[Tcl / Tk]() 封装在 python 中的*接口*。是90年代初推出的流行图形界面。除此之外,Tkinter的扩展集pmw和Tix功能上都要相对它强大,但Tkinter却是最基本的。我认为,在用python 做gui开发,tkinter是最基本的知识。也许以后的开发中并不常用tkinter,但是一些小型的应用上面,它还是很有用的,而且开发速度也很快。
Tkinter可以使用Python许可证,在Tcl / Tk的BSD许可证之上。

优势

Tkinter用起来非常简单,python自带的 IDLE就是采用它写的。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。它拥有大量的资源,包括书籍和代码示例,以及活跃的用户社区,广泛的简单入门示例。

学习

  • pyhon之Tkinter实例化学习 (转载自博客园 "jihite") ( )

  • Tkinter教程 ( 此为官方英文文档 )

  • Python图形界面编程---Tkinter模块基础 (转载自博客园 "lw_zhaoritian的博客")

使用Tkinter的步骤:
-导入Tkinter
-创建顶层窗口
-在顶层上创建其他控件
-控件与后台代码链接
-进入主程序循环事件

  • 【玩树莓】编程篇(五)Python下使用Tkinter 制作图形界面

  • Tkinter 8.5 reference: a GUI for Python

附:一个简单的文件管理器源代码


#!/usr/bin/env pythonimport os
from time import sleep
from Tkinter import *class DirList(object):def __init__(self, initdir=None):self.top = Tk()self.label = Label(self.top,text='Directory Lister v1.2')self.label.pack()self.cwd=StringVar(self.top)self.dirl = Label(self.top, fg='blue',font=('Helvetica', 12, 'bold'))self.dirl.pack()self.dirfm = Frame(self.top)self.dirsb = Scrollbar(self.dirfm)self.dirsb.pack(side=RIGHT, fill=Y)self.dirs = Listbox(self.dirfm, height=15,width=50, yscrollcommand=self.dirsb.set)self.dirs.bind('<Double-1>', self.setdirandgo)self.dirsb.config(command=self.dirs.yview)self.dirs.pack(side=LEFT, fill=BOTH)self.dirfm.pack()self.dirn = Entry(self.top, width=50,textvariable=self.cwd)self.dirn.bind('<Return>', self.dols)self.dirn.pack()self.bfm = Frame(self.top)self.clr = Button(self.bfm, text='Clear',command=self.clrdir,activeforeground='white',activebackground='blue')self.ls = Button(self.bfm,text='List Directory',command=self.dols,activeforeground='white',activebackground='green')self.quit = Button(self.bfm, text='Quit',command=self.top.quit,activeforeground='white',activebackground='red')self.clr.pack(side=LEFT)self.ls.pack(side=LEFT)self.quit.pack(side=LEFT)self.bfm.pack()if initdir:self.cwd.set(os.curdir)self.dols()def clrdir(self, ev=None):self.cwd.set('')def setdirandgo(self, ev=None):self.last = self.cwd.get()self.dirs.config(selectbackground='red')check = self.dirs.get(self.dirs.curselection())if not check:check = os.curdirself.cwd.set(check)self.dols()def dols(self, ev=None):error = ''tdir = self.cwd.get()if not tdir:tdir = os.curdirif not os.path.exists(tdir):error = tdir + ': no such file'elif not os.path.isdir(tdir):error = tdir + ': not a directory'if error:self.cwd.set(error)self.top.update()sleep(2)if not (hasattr(self, 'last') \and self.last):self.last = os.curdirself.cwd.set(self.last)self.dirs.config(selectbackground='LightSkyBlue')self.top.update()returnself.cwd.set('FETCHING DIRECTORY CONTENTS...')self.top.update()dirlist = os.listdir(tdir)dirlist.sort()os.chdir(tdir)self.dirl.config(text=os.getcwd())self.dirs.delete(0, END)self.dirs.insert(END, os.curdir)self.dirs.insert(END, os.pardir)for eachFile in dirlist:self.dirs.insert(END, eachFile)self.cwd.set(os.curdir)self.dirs.config(selectbackground='LightSkyBlue')def main():d = DirList(os.curdir)mainloop()if __name__ == '__main__':main()

2. PyQt

简单介绍:

PyQt实现了Python与Qt库(是一个完整的C++应用程序开发框架,是目前最强大的界面库之一)的完美融合,是一个创建GUI应用程序的工具包。使用它开发出的应用程序在其他平台上会拥有熟悉的外观和感觉。

优势:

是一个比较流行的库,功能强大,开发的界面也是挺不错的,跨平台的支持很好,同样适应于大型应用。

学习

  • PyQt5 中文学习教程 (转载自博客园 "Archi")
  • 英文文档

  • 附:Qt 官网 Qt 库与MFC 库的简单认知

3. WxPython

简单介绍:

WxPython(python对WxWidgets的移植)的功能上面要强于 Tkinter 。面向对象的编程风格,设计的框架类似于MFC (是目前最强大的界面库之一)。对于大型GUI应用上面,WxPython还是具有很强的优势的。boa constructor可以帮助我们快速可视地构建WxWidgets界面。但是需要注意的是,可能需要将WxPython与应用程序捆绑在一起,因为它不会随Python自动安装。
WxPython使用其父项目的wxWindows库许可证。

优势

它的入门使用也比较容易,比较流行的一个 Tkinter 的替代品,在 各种平台下都表现挺好。

学习

  1. wxPython中基本控件学习 ( 转载自博客园 "风清扬001" )

  2. wxPython学习笔记系列 ( 转载自博客园 "夜雨寄北丶" )

  3. wxPython的基础教程

4. PySide

简单介绍

这个框架最早是由 Nokia 的芒果团队做完的,在2009年8月,PySide首次发布。提供和PyQt类似的功能,并相容 API。但与 PyQt 不同处为使用LGPL授权。但是,众所周知的原因,这个团队已经消失了。据说,Qt 重新接管了它的开发工作,而且处于活跃状态。
是另一个 Python 对跨平台的 GUI 工具集 Qt 的包装(可认为PySide是跨平台的应用程式框架Qt的Python绑定版本),捆绑在 Python 当中,最初由 BoostC++ 库实现,后来迁移到 Shiboken。

优势

另一个比较流行的一个 Tkinter 的替代品,学习起来也是相对容易,因为是对GUI工作机Qt 的包装,跨平台性支持比较好。

学习

  • PySide图形界面开发系列 (转载自博客园 "人怜直节生来瘦,自许高材老更刚。")

5. PyGTK

简单介绍

Gtk是linux下Gnome的核心开发库,是一系列的 Python 对 GTK+ GUI 库的包装,功能上面非常齐全。值得说明的是,在windows平台下gtk的显示风格并不是特别本地化。不过他带的glade的界面设计器还是可以帮你省不少事的。

优势

又一个比较流行的一个 Tkinter 的替代品,许多 Gnome 下的著名应用程序的 GUI 都是使用 PyGTK 实现的,比如 BitTorrent ,GIMP和 Gedit 都有可选的实现,在 Windows 平台 似乎表现不太好,这点也无可厚非,毕竟使用的是GTK 的 GUI 库。

6. Jython

尝试过用python访问java类库吗,那么就用jython吧,Jython 程序可以和 Java 无缝集成。
(除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码)
Jython其实可以认为是另外一个python开发环境,基于java的,但是大多数的CPython调用jython下还是可以的。你可以在jython环境下像使用java一样来通过python的语法来调用java语言,真的很酷。

7. MFC

Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。

8. PythonCard

PythonCard其实是对wxPython的再封装。不过封装的更加简单,使用起来觉得比wxPython更直观,也更简单化了。

9. Dabo

仍是一个基于wxpython的再封装库,没用过,不太了解。它提供数据库访问,商业逻辑以及用户界面。

10. AnyGui

通过底层的api来访问其它工具集,像tkinter,wxpython和qt.具体也没怎么用过。

11. WPY

MFC风格的Gui开发库,代码风格也类似于MFC,仅管如此,你依旧可以使用这个库来开发GUI应用,而不用担心平台移植的问题。她同样是一个跨平台的库。

12. IronPython

如果你要想开发.net下面的应用的话,那么IronPython就是你的选择,与jython有点类似,他同样支持标准的python模块,但同样增加了对.net库的支持。你也可以理解为他是另一个python开发环境。你可以非常方便地使用python语法进行.net应用的开发,这一点听起来真的挺有意思。

附:如果你是java用户,那么你就用jython,除了可以享受python的模块功能及语法外,你可以找到许多java的影子;
如果你是.net用户,那么就用iron python吧。
如果你对Visual C++很熟悉,那么你可以使用MFC,WPY或是wxPython,当然我更建议wxPython了。
当然,我认为对于tkinter是每一个原来搞C的人都应该了解和学习的GUI库,因为它很轻便,小型应用就可以使用它来搞定,而对于较大型应用可以采用pyGtk,pyQt,WxPython或 PythonCard来搞定,这样的话,既可以注重知识的衔接性,也可以快速进行软体的开发了。

参考资料:

[1]Tkinter 的介绍 : http://en.wikipedia.org/wiki/Tkinter
主页
[2]PyQt 的介绍 : http://en.wikipedia.org/wiki/PyQt
主页
[3]wxPython 的介绍 : http://en.wikipedia.org/wiki/WxPython
主页
[4]PySide 的介绍 : http://en.wikipedia.org/wiki/PySide
主页
[5]PyGTK 的介绍 : http://en.wikipedia.org/wiki/PyGTK
主页

转载于:https://www.cnblogs.com/darksouls/p/8169217.html

Python入门 —— 03GUI界面编程相关推荐

  1. python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解

    全栈工程师开发手册 (作者:栾鹏) python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包 ...

  2. python应用系列教程——python的GUI界面编程Tkinter全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 ...

  3. Python的GUI界面编程Tkinter全解

    python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter可 ...

  4. 编程小白的第一本python入门书-《编程小白的第一本Python入门书》读书笔记

    对于编程零基础初学者来讲,Python入门选择看什么样的书是很重要的.第一本Python入门书的内容要精简,不然新手学了很久,都还在死磕基础知识.书的难度也不能太高,不然缺乏基础的学习者会看不懂,从而 ...

  5. 儿童编程python入门_儿童编程python入门

    经常会有小朋友问我,"我想做个黑客,我该学什么编程语言?",或者有的小朋友会说:"我要学c,我要做病毒".其实对于这些小朋友而言他们基本都没有接触过编程语言,只 ...

  6. python窗口图形界面编程上传图片_python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例...

    注意主窗口一定要为tk.Tk(),在主窗口上通过button的点击相应子函数创建子窗口,注意此时创建出来的窗口必须是Toplevel,否则出错. 至于用图片在窗口上绘图,则按代码所示即可. # -*- ...

  7. python 舍去小数_零基础小白Python入门必看——编程基础概念

    1. 程序的构成 程序由模块组成,一个模块对应python的源文件 ,一般后缀为:.py 模块由语句构成 语句是python程序的构造单元,用于创建对象.变量赋值.调用函数.控制语句等. 2. 对象 ...

  8. python面向对象编程的优点-Python入门之面向对象编程(一)面向对象概念及优点

    概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...

  9. python入门之网络编程Scoket

    1.网络编程基础: Sockets(套接字)可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. Socket主要是使用IP地址,协议,端 ...

最新文章

  1. 微信小程序去掉左上角的返回箭头
  2. Linux 下Shell脚本删除过期文件
  3. vim插件推荐之auto-pairs
  4. 如何在Java中使用QRGen创建QRCode
  5. 【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!
  6. a标签实现不跳转点击
  7. R7-4 检查密码 (15 分)
  8. chm editor
  9. 和表头对齐 表格_表格技巧—如何在Excel表格中制作三栏表头
  10. BitCoin Gloom系列
  11. pandas小记:pandas汇总统计函数
  12. shl归纳推理测试题库_SHL(外企笔试常见试题)全攻略
  13. linux 安装p7zip 支持rar
  14. AI学习 Day09 面向对象基础(下)
  15. 资本家的收割阴谋---空气币FIL“挖矿”庞氏骗局还能坚持多久?
  16. 服务器异常原因和解决方法
  17. Cargo 私有仓库部署
  18. 第一个项目的cmd代码
  19. 100万算大钱还是小钱?
  20. 10倍双目望远镜系统设计

热门文章

  1. 高等数学(7) 极限运算法则
  2. HDU4870_Rating_双号从零单排_高斯消元求期望
  3. 微信支付问题,支付成功后跳转到指定页面
  4. Material icons全部图标截图(共1117个)
  5. python中的real函数_RealPython基础教程:Python 基本数据类型介绍
  6. aigc - 文化衫设计
  7. 智能网联开发及测试技术动态
  8. 盈利因子(Profitability factor)——投资组合分析(EAP.portfolio_analysis)
  9. 图片渲染延迟_深度算法优化 金山云低延迟直播码率再节省12%~17%
  10. [OpenWRT]极路由B70(HC5962)刷OpenWRT笔记(一)