学习PyQt (1)

如果你已经懂得如何编写基于控制台的应用程序,现在开始我们来学习编写使用Python通过PyQt开发图形用户接口的应用程序。
* 简介Qt tookit 与 PyQt
* PyQt 安装
* 窗口与对话框
* 编码创建GUI应用程序
* 使用 Qt Designer
* 理解基本的窗口小部件 -- Label, Line Edit, PushButton
* PyQT的事件处理
* Qt Designer实现第一个应用程序
* 链接预定义的slots
* 使用自定义的slots
* 转换数据类型
* 定义 buddies 与 设置tab order

让我们从介绍Qt Tookit开始

Qt Toolkit, 简称 QT,  是由奇趣科技(Trolltech)开发的一个跨平台的应用及UI框架,用来开发GUI应用程序。可运行在多个系统平台上,Windows, Mac OS X, Linux, 及其他Unix平台。也被称为widget toolkit, 因为它提供了设计一个GUI所需要的按钮、标签、文本框、pushbuttons、列表框等小窗口部件。它包括一个跨平台的类集合,集成开发工具、及一个跨平台的IDE。

PyQT
PyQt是一个捆绑了Qt toolkit的Python集合。结合了Qt及Python的优势。使用PyQt, 你可以include使用Python编码的Qt库,可以使用Python编写GUI应用程序。换句话说,PyQt允许你通过Python代码访问所有Qt提供的东西。由于运行PyQt依赖于Qt库,当你安装PyQt的时候, Qt所需要的版本也需要安装。(Windows下安装PyQt时会自动安装QT库?,因很少使用Windows,这个待验证)

安装
在你开始安装PyQt前,你的系统上需要已经安装了Python解释器。从这里下载PyQT:
http://www.riverbankcomputing.co.uk/software/pyqt/download.
安装过程略。


窗口和对话框
一个GUI应用程序可以由一个主窗口和几个对话框或者只有一个对话框组成。一个小GUI程序通常至少由一个对话框构成。一个对话框应用包含按钮,不包含菜单栏、工具栏、状态条、central widget, 而一个主窗口应用程序通常包括所有这些。一个central widget是一个包含其他widget的widget。

对话框有两种类型:模态与非模态。 一个模态对话框阻止用户与应用程序其他部分交互。对话框是用户可以同应用交互仅有的部分,直到该对话框被关闭,应用程序的其他部分才可以被使用。非模态对话框与模态对话框相反,当一个非模态对话框处于活动状态,用户可以自由的同该对话框以及应用程序的其他部分交互。

创建Gui应用程序的方法
两种方法创建一个GUI应用程序:
     使用一个简单的文本编辑器从头开始;
     使用Qt Designer, 一个可视化的设计工具
显然, 使用PyQt开发GUI应用程序你会使用Qt Designer。在你开始这样做之前,应该理解一个GUI应用程序的结构。
让我一起通过代码创建一个GUI应用程序吧。

使用代码创建一个GUI应用程序
创建的这个应用程序会显示一个"Close"按钮。点击这个Close按钮将会终止程序。在任意文本编辑器中输入下面的代码并且以.pyw作为扩展名保存。不需要包括代码中的行号,它们仅仅是用来标识语句并解释它们角色用的。

       注意:
       在此节以前你创建的控制台应用程序被保存成.py扩展名。现在要开发的GUI应用程序要保存成.pyw扩展名。这样是为了调用Pythonw.exe解释器而不是Python.exe解释器(针对Windows平台),使得执行Python GUI应用程序时不显示控制台窗口。

1 import sys
 2 from PyQt4 import QtGui, QtCore
 
 3 class DemoWindow(QtGui.QWidget):
 4     def __init__(self, parent=None):
 5         QtGui.QWidget.__init__(self, parent)
 6         self.setGeometry(300, 300, 200, 200)
 7         self.setWindowTitle('Demo Window')
 8         quitBtn = QtGui.QPushButton('Close', self)
 9        quitBtn.setGeometry(10, 10, 70, 40)
10        self.connect(quitBtn, QtCore.SIGNAL('clicked()'), QtGui.qApp,
               QtCore.SLOT('quit()'))

11 app = QtGui.QApplication(sys.argv)
12 dw = DemoWindow()
13 dw.show()
14 sys.exit(app.exec_())


在运行这个应用程序以前,让我们来看看每行代码做了什么。
1,2. 导入必要的模块。基本的GUI窗口部件放在QtGui模块中。
3. QWidget是PyQt4中所有UI对象的基类,创建新类DemoWindow继承自基类, QWidget
4,5.  提供了QWidget的默认构造函数。默认构造函数没有parent,没有parent的widget将被认为是窗口
6. setGeometry() 设置窗口的尺寸以及将它放到哪。前两个参数x,y定位窗口放置的位置。第三、四参数分别是窗口的宽度和高度.200像素宽高的窗口将定位在坐标300,300。
7. 语句设置窗口标题为Demo Window. 标题将显示在标题栏上
8. 创建一个带有'Close'文本的按钮
9. 定义pushbutton的宽和高分别为70、40像素, 定位于QWidget上的坐标10, 10
10. PyQt4中的事件处理使用 signal 和 slot。 一个singal是一个事件, slot是信号发生时要执行的方法。例如,当你点击
 pushbutton时, 一个 clicked() 事件,作为信号出现或发生。QtCore.QObject.connect() 方法连接 signal 和 slot。在上面例子中, slot是PyQt4中预定义的方法: quit()。 就是说, 当用户点击这个pushbutton, quit()方法将为调用。
11. 通过QtGui模块的QApplication方法创建一个名为app的应用程序对象。每个PyQt4应用程序必须创建按一个应用程序对象。sys.argv, 包含来自命令行的参数列表, 创建应用程序对象时传递给该方法。sys.argv辅助传递、控制脚本启动属性。
12. 创建了为名dw的DemoWindow类的实例
13. show方法将在屏幕上显示widget
14. 为应用程序开始事件处理循环。事件处理循环等候时间出现并且针对事件执行一些任务。事件处理循环持续工作直到exit()方法被调用或者主widget被销毁。sys.exit()方法确保程序干净的退出,释放内存资源。

注意:
exec_()方法带一个下划线,因为exec是Python的关键词。

执行上述程序可以得到一个标题为"Demo Window"的窗口,该窗口上有一个"Close"按钮,当按钮被点击,quit()方法会被执行,终止这个应用。


链接:http://www.pythoner.cn/home/blog/learn-pyqt-1/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值