读Pyqt4简介,带你入门Pyqt4 _001
PyQt是用来创建GUI应用程序的工具包,它把Python和成功的Qt绑定在一起,Qt库是这个星球上最强大的库之一,如果不是最强大的话。
PyQt作为一组Python模块的实现。有超过300个类和超过6000个方法。它是个跨平台的工具包,它可以运行在所有的主流操作系统上。包括Unix、Windows、Mac。它具有双重授权,开发者可以选择GPL或者商业授权。以前GPL版本只能在Unix上获得。从PyQt4开始,可以在所有支持的平台上获得GPL协议。
由于有大量可用的类,它们被分成多个模块。

图:PyQt4模块
接下来介绍一些例子来进行学习:
示例一:
这个例子十分简单,它仅仅现实一个小窗体。但是我们可以在这个窗体上进行很多操作,我们可以调整大小、最大化、最小化
#!/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
我们在这里进行一些必要的import操作。基本的GUI组件在 QtGui 模块中。
app = QtGui.QApplication(sys.argv)
每个PyQt4程序必须创建一个application对象,application在 QtGui 模块中, sys.argv 参数是命令行中的一组参数。Python脚本可以在shell中运行,这样,我们可以控制脚本的启动。
widget = QtGui.QWidget()
QWidget 窗口组件是PyQt4中所有用户界面对象的基类,我们使用 QWidget 默认的构造,没有父亲。没有父亲的窗口组件称为窗体。
widget.resize(250, 150)
resize() 方法调整了 widget 的大小,宽250像素,高150像素。
widget.setWindowTitle('simple')
这里我们为窗口设置了标题,标题显示在标题栏上。
widget.show()
show() 方法将窗口呈现在屏幕上。
sys.exit(app.exec_())
最后,我们输入应用程序的主事件循环,事件处理从这里开始。主事件循环从窗口系统接收事件并分发到应用程序的窗口组件上。当主事件循环结束,如果我们调用 exit() 方法或者主窗口组件被销毁。 sys.exit() 方法确保干净的退出。将通知环境应用程序是如何结束的。
你是否想知道为什么 exec_() 方法会有下划线,一切皆有含义,这显然是因为exec是Python的关键字,因此,用 exec_() 来取代它。

示例二:
默认情况下,当我们点击标题栏上的关闭按钮, QWdiget 将关闭。有时候我们需要改变默认行为,比如:当我们在编辑器中打开一个文件并且做了一些修改,显示一个消息框来确认这个动作。
#!/usr/bin/python # messagebox.py import sys
from PyQt4 import QtGui class MessageBox(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent) self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('message box') def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore() app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())
如果我们关闭 QWidget ,将会产生一个 QCloseEvent 事件,我们需要重新实现 closeEvent() 事件来改变组件的行为。
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
我们显示一个两个按钮的消息框,Yes和No。第一个字符串显示在标题栏上,第二个字符串是信息文本,显示在对话框中,返回值存储在 relay 变量中。
(Mac OS X上不显示标题)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
这里我们测试返回值,如果点击Yes按钮,表明接受这个事件,将会关闭窗口组件并进回到应用程序的结尾,反之则忽略该关闭事件。


本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4512851.html
读Pyqt4简介,带你入门Pyqt4 _001的更多相关文章
- 读Pyqt4教程,带你入门Pyqt4 _006
窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...
- 读Pyqt4教程,带你入门Pyqt4 _009
QLineEdit QLineEdit 窗口组件用来输入或者编辑单行纯文本,有撤销/重做,剪切/粘贴和拖放功能. #!/usr/bin/python # -*- coding: utf-8 -*- # ...
- 读Pyqt4教程,带你入门Pyqt4 _005
对话框窗体或对话框是现代GUI应用不可或缺的一部分.dialog定义为两个或多个人之间的交谈.在计算机程序中dialog是一个窗体,用来和程序“交谈”.对话框用来输入数据.修改数据.改变程序设置等等. ...
- 读Pyqt4教程,带你入门Pyqt4 _004
在PyQt4教程的这部分中,我们将探讨应用中事件和信号的发生. 事件是GUI程序的重要部分,由用户或者系统产生.当我们调用应用的 exec_() 方法,应用进入主循环.主循环获取事件并把它们发往对象. ...
- 读Pyqt4教程,带你入门Pyqt4 _003
编程中的一个重要事情是布局管理,布局管理是如何在窗体上摆放窗口组件.可以有两种方式进行管理:绝对定位或使用布局类. 绝对定位 程序员用像素指定每个控件的位置和尺寸.使用绝对定位时,你必须理解几件事情. ...
- 读Pyqt4教程,带你入门Pyqt4 _002
在这节教程中,我们将创建菜单和工具栏. QMainWindow 类提供应用程序主窗口,可以创建一个经典的拥有状态栏.工具栏和菜单栏的应用程序骨架. 菜单栏 菜单栏是GUI应用程序最明显的部分之一,这是 ...
- 读Pyqt4教程,带你入门Pyqt4 _008
QCalendarWidget QCalendarWidget 提供基于月份的日历窗口组件,它允许用户简单并且直观的选择日期. #!/usr/bin/python # -*- coding: utf- ...
- 读Pyqt4教程,带你入门Pyqt4 _007
QSlider 滑块是由一个简单的滑柄的窗口组件.该滑柄可以前后拖动,通过这种方式我们可以为特定任务选择值.有时候使用滑块比简单提供数值或使用微调框(spin box)更自然. QLabel 显示文字 ...
- 读Pyqt4教程,带你入门Pyqt4 _013
你是否曾经看着应用程序并思考特定的GUI项是如何产生的?大概每位程序员都这样过.然后你能看到你喜欢的GUI库提供的一系列窗口组件,但是你无法找到它.工具包通常仅仅提供最常用的窗口组件,比如按钮.文本组 ...
随机推荐
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...
- 关于RMQ问题的四种解法
什么是RMQ问题: RMQ (Range Minimum/Maximum Query):对于长度为n的数组A,回答若干询问RMQ(A,i,j)(i,j<=n-1),返回数组A中下标在i, ...
- RF(ride 工具使用)
1.新建项目 project,工程 suite,用例 testcase 新建 project:file -> new project,输入工程名,Type 选择 directory,选择工程存放 ...
- Jenkins联动码云自动匹配分支进行构建流水线
一.安装Generic Webhook Trigger插件 二.创建项目 创建项目之前先准备自己的项目,如果没有可以我fork的一个项目.地址是:https://gitee.com/jokerbai/ ...
- SQLite使用(二)
sqlite3_exec虽然好用,但是一般不推荐直接使用. 常用的一组操作是: 关于sqlite3_exec和sqlite3_prepare_v2的使用场景,建议如下: 一个小DEMO: #inclu ...
- 集成学习基础知识总结-Bagging-Boosting
理论 在概率近似正确((probably approximately correct)学习框架下.一个概念是强可学习的充分必要条件是这个概念是弱可学习(仅比随机猜测稍好). 要求 个体学习器要好而不同 ...
- Java笔记(day20-22)
IO流: 输入流.输出流 字节流.字符流:为了处理文字数据方便而出现的对象. (其实这些对象的内部使用的还是字节流(因为文字最终也是字节数据,只不过,通过字节流读取了相对应的字节数,没有对这些字节直接 ...
- 正方形已知两点对角线求另外两点(POJ2002)
至于为什么,上图.转载于MZW_BG 枚举正方形的一条边,此时有上正方形和下正方形. 最后正方形个数/4,因为每个正方形被枚举了4条边 #include <bits/stdc++.h> u ...
- M - 昂贵的聘礼 最短路 dij
http://poj.org/problem?id=1062 这个题目有一点点特别,因为数据很小也可以用Floyd跑,但是个人比较钟爱dij. 这个dij是怎么走的呢,首先就是普通的建图,然后就是带上 ...
- 如何优雅的使用Fegin去构造通用的服务调用的API
第一步: 创建一个公共的API服务:命名为api(根据自己实际情况进行命名) <?xml version="1.0" encoding="UTF-8"?& ...