没有合适的资源?快使用搜索试试~ 我知道了~
首页循序渐进linux:基础知识、服务器搭建、系统管理、性能调优、集群应用
资源详情
资源评论
资源推荐
1
PyQt4 入门指南
版本 1.0 翻译 hqwfreefly 日期 2011-5-5
声明:鄙人英文水平有限,若您对文中描述有异议,请以原文为准
分享知识 传递快乐
2
1.PyQt4 工具包简介
1.1 关于本指南
这是一个入门级的 PyQt 指南。其目的在于引导读者快速上手 PyQt4 工具包。该指南在
Linux 环境下创建并通过测试。
关于 PyQt
PyQt 是用来创建 GUI 应用程序的工具包。它是 Python 编程语言与已获得成功的 Qt 库
的 混 合 体 。 其 中 Qt 库 是 这 个 星 球 上 最 强 大 的 GUI 库 之 一 。 PyQt 的 官 方 网 站 是
http://www.riverbankcomputing.com/software/pyqt/intro 它由 Phil Thompson 创建。
PyQt 的实现被视作 Python 的一个模块。它由 300 多个类和接近 6000 个函数与方法构
成。作为一个跨平台的工具包,PyQt 可以在所有主流的操作系统上运行(Unix、Windows、
Mac)。PyQt 有两种许可,开发者可以在 GPL 和商业许可证之间做出选择。之前,PyQt 的
GPL 许可证只在 Unix 系统上可用,但在 PyQt4 之后,其 GPL 许可证适用于所有支持它的
系统。
因为 PyQt 有大量的类,为便于管理,它们被划分到如下的几个模块中。
其中 QtCore 模块包含了核心的非 GUI 功能函数,用于以下方面:日期、文件和目录、
数据结构、数据流、URL、MIME、线程和进程。QtGui 模块则包含了绘图组件以及与绘图
相关的类,比如按钮、窗口、状态栏、工具栏、滑块、位图、颜色、字体等。QtNetWork 模
块包含用于网络编程的类,用户可以用这些类实现 TCP/IP 和 UDP 的客户端或服务器。并且
使用这些类会使网络编程更加容易、轻便。QtXml 包含用于处理 XML 文件的类,该模块提
供了 SAX 和 DOM API 两种 XML 文件处理方式的实现。QtSvg 模块包含了用于显示 SVG
(可缩放矢量图形,参考 http://zh.wikipedia.org/wiki/SVG)文件内容的类。QtOpenGL 模块
用于渲染使用 OpenGL 库创建的 3D 或 2D 图形。并且它支持 Qt GUI 库和 OpenGL 库的无缝
结合。QtSql 则库提供了用于操作数据库的类。
1.2 使用 PyQt4 创建入门程序
在本章的 PyQt4 指南中我们将学习一些基本的功能。我们讲解的速度会很慢,就像是
在和一个孩子说话一样。对于一个孩子来说,他迈出的第一步是笨拙迟缓的。同样,对于一
个编程新手来说,他接受新事物的过程也会比较的迟缓。但请谨记,没有愚蠢的人,只有懒
人和人,并且懒人和人之间可以相互转换。
一个简单的示例
下面的示例代码非常简单,它只显示一个小窗口。然而,我们可以对窗口进行的操作却
有很多,比如我们可以修改它的大小、最大化、最小化等。而这些操作却需要大量的代码,
由于这些操作在很多程序中都需要用到,所以前人已经写好了这些操作的代码。我们没有必
要一遍一遍的重新编写这些代码,因此这些代码对程序员来说是隐藏的。PyQt 是一个高度
QtGui
QtCore
QtNetWork
QtSvg
QtSqlQtXml
QtOpenGL
3
抽象的工具包,因此,如果我们使用较底层的工具包来实现相同的功能,下面的示例代码就
会增长很多。
#!/usr/bin/python
# simple.py
import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()
sys.exit(app.exec_())
-----------------------------------------------------------------------------------------------------------------
import sys
from PyQt4 import QtGui
这两句用来载入必须的模块。基本的 GUI 窗口部件在 QtGui 模块中。
app = QtGui.QApplication(sys.argv)
每一个 PyQt4 程序都需要有一个 application 对象,application 类包含在 QtGui 模块中。
sys.argv 参数是一个命令行参数列表。Python 脚本可以从 shell 中执行,参数可以让我们选择
启动脚本的方式。
widget = QtGui.QWidget()
QWidget 部件是 PyQt4 中所有用户界面类的父类。这里我们使用没有参数的默认构造函
数,它没有继承其它类。我们称没有父类的 widget 为一个 window。
widget.resize(250, 150)
resize()方法可以改变窗口部件的大小,在这里我们将其设置为 250 像素宽,150 像素高。
widget.setWindowTitle('simple')
这句用来设置窗口部件的标题,该标题将在标题栏中显示。
widget.show()
show()方法将窗口部件显示在屏幕上。
sys.exit(app.exec_())
最后我们进入该程序的主循环。事件处理从本行语句开始。主循环接受事件消息并将其
分发给程序的各个部件。如果调用 exit()或主部件被销毁,主循环就会结束。使用 sys.exit()
方法退出可以确保程序可以完整的结束,这种情况下系统的环境变量会记录程序是如何退出
的。
也许你会疑惑,为什么 exec_()方法会有一个下划线。这是因为 exec 是 Python 的关键字,
为避免冲突,PyQt 使用 exec_()替代。
4
截图:simple
1.3 程序图标
程序图标就是一个小图片,通常显示在程序标题栏的左上角。在以下的示例中,我们将
学习如何在 PyQt 中使用程序图标,另外我们还将学习一些新的方法。
#!/usr/bin/python
# icon.py
import sys
from PyQt4 import QtGui
class Icon(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Icon')
self.setWindowIcon(QtGui.QIcon('icons/web.png'))
app = QtGui.QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())
-----------------------------------------------------------------------------------------------------------------
上一个示例采用了面向过程的方法编写。 Python 语言同时支持面向过程和面向对象两
种编程方法。PyQt 编程是面向对象的。
class Icon(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
面向对象编程中最重要的是类、属性和方法。以上代码中,我们创建了一个名为 Icon
的新类,该类继承 QtGui.QWidget 类。因此我们必须调用两个构造函数——Icon 的构造函数
5
和继承类 QtGui.QWidget 类的构造函数。
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Icon')
self.setWindowIcon(QtGui.QIcon('icons/web.png'))
setGeometry()方法完成两个功能——设置窗口在屏幕上的位置和设置窗口本身的大小。
它的前两个参数是窗口在屏幕上的 x 和 y 坐标。后两个参数是窗口本身的宽和高。
setWindowIcon()方法用来设置程序图标,它需要一个 QIcon 类型的对象作为参数。调用 QIcon
构造函数时,我们需要提供要显示的图标的路径(相对或绝对路径)。
截图:Icon
1.4 显示提示信息
我们可以为任何窗口部件设置一个气球提示。
#!/usr/bin/python
# tooltip.py
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class Tooltip(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Tooltip')
self.setToolTip('This is a <b>QWidget</b> widget')
QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))
剩余37页未读,继续阅读
xiamenwantong
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0