没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
6页
一般来说,选择用于应用程序的 GUI 工具箱会是一件棘手的事。使用 Python(许多语言也一样)的程序员可以选择的 GUI 工具箱种类繁多,而每个工具箱都有各自的优缺点。有些速度比其它工具箱快,有些比较小;有些易于安装,有些更适合于跨平台使用(对于这一点,还要指出,有些支持您需要满足的特定特性)。当然,各种库都相应具有各种许可证。 对于 Python 程序员而言,缺省的 GUI 选择是 Tk(通过 Tkinter 绑定)― 其原因显而易见。Tkinter 和闲置的 IDE 是由 Python 创始人编写的,它们是作为大多数 Python 分发版的缺省选择而出现的。标准 Python 文档讨论了 Tkinter,但没有涉及任何其它 GUI 绑定。这是故意的!至少可以这么认为,如果 Tk 和 Tkinter 不是这么糟糕,程序员就没有理由去寻找替代品了。要诱导 Python 程序员放弃缺省选择,那么工具箱必须提供额外的东西。PyQt 就是这样一个工具箱。 PyQt 所具有的优点远远超过了 Tkinter(它也有几个缺点)。Qt 和 PyQt 速度都很快;Qt 和 PyQt 的设计完全是面
资源推荐
资源详情
资源评论
用 PyQt 进行 Python 图形界面的程序的开发的入门指引
一般来说,选择用于应用程序的 GUI 工具箱会是一件棘手的事。使用 Python(许多语言
也一样)的程序员可以选择的 GUI 工具箱种类繁多,而每个工具箱都有各自的优缺点。有
些速度比其它工具箱快,有些比较小;有些易于安装,有些更适合于跨平台使用(对于这一
点,还要指出,有些支持您需要满足的特定特性)。当然,各种库都相应具有各种许可证。
对于 Python 程序员而言,缺省的 GUI 选择是 Tk(通过 Tkinter 绑定)― 其原因显而易
见。Tkinter 和闲置的 IDE 是由 Python 创始人编写的,它们是作为大多数 Python 分发
版的缺省选择而出现的。标准 Python 文档讨论了 Tkinter,但没有涉及任何其它 GUI 绑
定。这是故意的!至少可以这么认为,如果 Tk 和 Tkinter 不是这么糟糕,程序员就没有
理由去寻找替代品了。要诱导 Python 程序员放弃缺省选择,那么工具箱必须提供额外的东
西。PyQt 就是这样一个工具箱。
PyQt 所具有的优点远远超过了 Tkinter(它也有几个缺点)。Qt 和 PyQt 速度都很快;Qt
和 PyQt 的设计完全是面向对象的;Qt 提供了一个设计良好的窗口构件集合,它比 Tk 所
提供的要大得多。就其缺点而言,Qt 的许可证受到的限制比许多工具箱(至少在非 Linux 平
台方面)都多;正确安装 Qt 和 PyQt 常常会很复杂;另外,Qt 是一个相当大的库。PyQt
应用程序的用户将需要设法完成安装 Qt 和 PyQt,这使分发变得很困难。(请阅读本文后
面的 用于其它语言的 Qt 绑定。)
PyQt 严格遵循 Qt 的发放许可。特别是,它可用于 UNIX/X11 平台上的 GPL,并可用于
Zaurus 上 的 Qt Palmtop Environment 环 境 , 还 存 在 用 于 较 老 的 Qt 版 本 的 免 费
(free-as-in-free-beer)Windows 软件包。PyQt 的商业许可证可用于 Windows。
对于本文而言,PyQt 有一个方面优于许多其它工具箱,它值得我们特别关注。Qt 使用一
种称为 信号/插槽(signals/slots)的机制在窗口构件(以及其它对象)之间传递事件和消
息。这种机制完全不同于包括 Tkinter 在内的大多数工具箱所用的回调(callback)机制。
使用信号/插槽以灵活且可维护的方式控制对象间通信要比使用脆弱的回调风格容易得多。
应用程序越大,Qt 的这个优势就越重要。
本文的作者之一 Boudewijn Rempt 已经出版了一本有关使用 PyQt 进行应用程序开发的
书籍。 GUI Programming with Python: QT Edition(请参阅 参考资料)显示了如何设计和
开发完整的 GUI 应用程序,其中包括从最初的构思到分发的全过程。
样本应用程序
要显示信号/插槽和回调之间的反差,我们提供了一个写着玩玩的应用程序,它使用
Tkinter 和 PyQt。尽管实际上 PyQt 版本对于这个基本程序并不更简单,但是它已经演示
了 PyQt 应用程序更好的模块性和可维护性。
应用程序包括四个窗口构件:
“Quit”按钮(用来与整个应用程序通信)
“Log Timestamp”按钮(用于窗口构件间的消息)
文本区域,显示可滚动的已记录日志的时间戳记列表
消息窗口构件,显示已记录日志的时间戳记数
在 Tkinter 中,我们可以这样实现应用程序:
清单 1. Logger.py Tkinter 应用程序
#!/usr/bin/python
import sys, time
from Tkinter import *
class Logger(Frame):
def __init__(self):
资源评论
程序猿小乙
- 粉丝: 62
- 资源: 1740
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功