python GUI 的选择
Tkinter
1 Tkinter 似乎是与 tcl 语言同时发展起来的一种界面库。tkinter 是 python 的配备的标准 gui 库。Tkinter 提供了一些简单的接口。和一些简单的窗口 按 钮等。优点是简单,易用。缺点是功能较少。 Tkinter 的安装:yum install tkinter yum install python-imaging yum install python-tools Tkinter 的使用:Tkinter 的使用非常简单,只要用 import Tkinter 将库导 入即可。 总结: 值得注意的是, 我发现 Tkinter 一定要在系统自带的 python2.4 版本 上,才能实现导入。在我安装的 python2.7,不能够实现导入。在这里,我也 发现了 centos 系统的一些缺陷,centos 系统自带的软件会比较旧,但是缺不 能够用 yum 来更新。自己编译安装过程中,会有许多错误。根据我网上查找 的资料了解,要自己重新配置 yum 的第三方库,因为公司本身已经不提供更新。
WxPython
5 WxWidgets 应该算是近几年了比较流行的 GUI 跨平台开发技术了。 wxpython 的功能上面要强于 tkinter,她提供了超过 200 个类,面向对象的编程 风格。相比 Tkinter,Wxpython 的功能强大了很多。 WxPython 的安装:下载 wxpython 的 RPM 包进行安装 WxPython 的使用与 Tkinter 类似,都是直接进行导入 import wx 将库导 入即可。 总结:对于 Wxpython 只是提供 gui 开发的基础库,并没有开发环境。又经过 一番搜索找到了几个基于 wxPython 的工具:boa、wxGlade、wxWidget。但是 我认为这样做 GUI 开发,不够方便。
PyQt
9 PyQt 是一个创建 GUI 应用程序的工具包。它是 python 编程语言和 Qt 库 的成功融合。 库是目前最强大的库之一。 Qt PyQt 是由 Phil Thompson 开发。 PyQt 实现了一个 Python 模块集。 PyQt 的安装:PyQt 的安装涉及到的东西比较多。因为编译 PyQt 要用到 qmake 工具, 所以首先要安装的是 Qt 的编译环境。 然后由于系统自带的 sqlite3 数据库和 python 版本太旧。 先要更新版本。 所以我安装了 sqlite3 的最先版本, 和 python2.7.(必须先安装 sqlite 数据库,再看装 python) 。然后是安装 PyQt 的依赖文件 sip,然后就可以编译安装 PyQt。 由于要 PyQt 有专门的编辑器 eric4,所以我们还需要安装 eric4.安装 eric4 前,必须先安装 QScintilla-gpl-2.7,再安装 eric。但是在我成功安装后却始终无 法打开 eric4。 总结:由于我学习的是 QT 编程,所以我在选择 python 的 GUI 开发时, 第一个选择的便是 PyQt,因为用相同的 Qt 库会比较好入手。而且 PyQt 的功 能很强大,而且根据我在网上找到的资料,大多数人都认为 PyQt 有着不错的 发展前景。 但是我没有能成功安装 eric 的编辑器环境。 但是我在寒假还是想尝 试一下 PyQt 的开发环境的安装。一来这样可以节省很多时间,二来,Qt 毕竟 是我比较熟悉的开发环境,而且支持各种平台。
PyGTK
12 PyGTK 让你用 Python 轻松创建具有图形用户界面的程序.底层的 GTK+提供了各 式的可视元素和功能,如果需要,你能开发在 GNOME 桌面系统运行的功能完整 的软件。PyGTK 真正具有跨平台性,它能不加修改地,稳定运行各种操作系统之 上,如 Linux,Windows,MacOS 等.除了简单易用和快速的原型开发能力外,PyGTK
还有一流的处理本地化语言的独特功。 PyGTK 的安装:首先 PyGTK 你要安装 GTK 库,和 glade 编辑器。我在网上 了解到 GTK 库已经到了 3.6.x 的版本,glade 也已经有推出了 glade3 的版本。 但是我在 centos 上安装都没有成功。因为他们依次依赖的文件太多,出现了 一些我暂时还解决不了的问题。后来我只好采用系统自带的旧版的 GTK 库, 并安装了 glade2 glade 的使用非常的方便,他类似 QtCreate,可以直接进行布局。并别他 有很全面的控件。并能够绘制出很漂亮的界面。而且保存的代码文件时用 xml 写的。 总结:glade 十分容易就行 GUI 的绘制。并且有着丰富的控件,而且支持 LGPL 协议。而且他还支持各种鼠标、键盘等事件。只需要用 python 来调用它 生成的文件。
很多python开发人员, 在选择界面库的时候都会犹豫一段时间, 到底是选择tk, wxpython, pygtk, pyqt, 还是什么其他奇怪的解决方案. 这里, 我建议, 不要多想了, 节省你的时间和精力, 选择pyqt.
很多开发人员, 在选择界面库时候(至少是你能够选择的时候)都会犹豫很长时间, 到底是MFC, winform, WPF, flash, swing, VCL(还有人知道delphi吗), 还是什么其他奇怪的解决方案, 这里, 我建议, 不要多想了, 节省你的时间和精力, 选择pyqt.
好了, 广告时间结束, 这里说明理由:
- 为什么python?
- python是最好用最好学的编程语言(没有之一, VB不够好用)
- 根据GUI的本质思维, 只有动态语言才能做到那么强的灵活性. 所以C/C++/java什么的不方便开发. 不然你动态生成页面试试?
- 快速开发. 同样的功能, python的代码是其他语言的若干分之一. 代码量少了, 开发速度和质量都提高了.
- 为什么Qt?
- 工业级别的界面库. tk, wxpython都太简陋了, 不堪大用. wxpython还有性能问题. (by Jimmy Kuu)
- 跨平台. VCL, winform, WPF, GTK可能好用一些, 但是跨平台试试? 以后一辈子和某个平台挂钩了. (好吧, GTK, mono可能多平台.. 但是没有pyqt好用)
- 简单直观的事件处理方式. 只需要把一个signal插入到一个slot里面就好了, 并且是热拔插. callback机制已经过时了.
- 性能很好, 足够工程使用. 一个实际的例子: linux下面的桌面系统KDE是基於Qt的.
- 虽然pyqt很好, 但是还有其他需要注意的方面
- 如果你是开源项目, 随便用. 但是如果是商业闭源, 那需要给 riverbank 他们交费, 一个开发者350英镑, 还是蛮划算的(比起开发时间来说). 或者你可以考虑 pyside?
- 发布. 打包后的pyqt程序, 10M左右, 如果你对空间要求很严格的话, 就不适合了. 但是现在这个网络时代, 这应该不成问题. QQ都非常大了..
- 性能. 如果你要画实时图片, 3d什么的, python恐怕太慢了, 老实用回C++吧.
- 移动应用. meego 还早, 好像可以在android上面写python, 但是pyqt.. 哈哈哈.
- web2.0. 好吧, jquery是你的武器. 写javascript去吧. 还有flash..