读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

时间: 2024-11-08 21:57:41

读Pyqt4简介,带你入门Pyqt4 _001的相关文章

读Pyqt4教程,带你入门Pyqt4 _011

当我们想要改变或者增强已存在的窗口组件时,或者准备从零开始创建自定义窗口组件时,可以使用绘图.我们通过使用PyQt4工具包提供的绘图API来绘图. 绘图在 paintEvent() 方法中进行.绘制代码在 QPainter 对象的 begin() 和 end() 之间. 绘制文本 我们从在窗口客户区绘制一些Unicode文本开始. #!/usr/bin/python # -*- coding: utf-8 -*- # drawtext.py import sys from PyQt4 impor

读Pyqt4教程,带你入门Pyqt4 _002

在这节教程中,我们将创建菜单和工具栏. QMainWindow 类提供应用程序主窗口,可以创建一个经典的拥有状态栏.工具栏和菜单栏的应用程序骨架. 菜单栏 菜单栏是GUI应用程序最明显的部分之一,这是分布在各个菜单的命令组合,在控制台程序中你需要记住所有那些晦涩难懂的命令,有了这些公认的标准,将进一步缩短学习新应用程序的时间. #!/usr/bin/python # menubar.py import sys from PyQt4 import QtGui, QtCore class MainW

读Pyqt4教程,带你入门Pyqt4 _013

你是否曾经看着应用程序并思考特定的GUI项是如何产生的?大概每位程序员都这样过.然后你能看到你喜欢的GUI库提供的一系列窗口组件,但是你无法找到它.工具包通常仅仅提供最常用的窗口组件,比如按钮.文本组件.滑块等等.没有工具包能够提供一切可能的组件. 实际上有两种工具包,轻量级和重量级.FLTK工具包是一种轻量级的工具包,它仅仅提供非常基本的组件并假设程序员能够自己创建更复杂的组件.PyQt4属于重量级,它有很多窗口组件,但是并不提供非常专业化的窗口组件.比如速度计窗口组件,用来度量烧录的CD的容

读Pyqt4教程,带你入门Pyqt4 _008

QCalendarWidget QCalendarWidget 提供基于月份的日历窗口组件,它允许用户简单并且直观的选择日期. #!/usr/bin/python # -*- coding: utf-8 -*- # calendar.py import sys from PyQt4 import QtGui from PyQt4 import QtCore class Example(QtGui.QWidget): def __init__(self): super(Example, self)

可能是史上最强大的js图表库——ECharts带你入门

PS:之前的那篇博客Highcharts——让你的网页上图表画的飞起 ,评论中,花儿笑弯了腰 和 StanZhai 两位仁兄让我试试 ECharts ,去主页看到<Why ECharts ?>简单了解了一下之后,ECharts很快吸引了我.里面引自马云的那句话“互联网还没有搞清楚的时候,移动互联网来了,移动互联没有搞清楚的时候,大数据来了”我是第一次听到,实在震撼了我啊(孤陋寡闻...). 本来没打算写什么的.可是作为一个后端开发者,看了半天文档也迷迷糊糊,查了一堆资料也没搞懂Echarts那

我在爱板网写的-- 【望月追忆】带你入门STM32F0系列文章

[望月追忆]带你入门STM32F0之前传:STM32F0资料 [望月追忆]带你入门STM32F0之环境搭建 [望月追忆]带你入门STM32F0之一:STM32F0概述 [望月追忆]带你入门STM32F0之二:SysTick时钟介绍 [望月追忆]带你入门STM32F0之二:点亮你的小灯 [望月追忆]带你入门STM32F0之三:按键----查询方式 [望月追忆]带你入门STM32F0之四:按键----外部中断 [望月追忆]带你入门STM32F0之四:串口 [望月追忆]带你入门STM32F0之五:小项

史上最强大的js图表库——ECharts带你入门(转)

出处:http://www.cnblogs.com/zrtqsk/p/4019412.html PS:之前的那篇博客Highcharts——让你的网页上图表画的飞起 ,评论中,花儿笑弯了腰 和 StanZhai 两位仁兄让我试试 ECharts ,去主页看到<Why ECharts ?>简单了解了一下之后,ECharts很快吸引了我.里面引自马云的那句话“互联网还没有搞清楚的时候,移动互联网来了,移动互联没有搞清楚的时候,大数据来了”我是第一次听到,实在震撼了我啊(孤陋寡闻...). 本来没打

带你入门SpringCloud 之 通过SpringCloud Bus 自动更新配置

前言 在<带你入门SpringCloud统一配置 | SpringCloud Config>中通过 SpringCloud Config 完成了统一配置基础环境搭建,但是并没有实现配置修改自动更新的操作(GitHub 或Gitee 修改配置后,需要重启配置服务才能更新配置). 本文是<带你入门SpringCloud统一配置 | SpringCloud Config>的续篇,通过 SpringCloud Bus 完成配置修改自动更新的操作介绍. 阅读本文前需要你先移步<带你入门

手把手带你入门神秘的RxJava

1.什么是RxJava? Rx是Reactive Extensions的简写,翻译为响应的扩展.也就是通过由一方发出信息,另一方响应信息并作出处理的核心框架代码.? 该框架由微软的架构师Erik Meijer领导的团队开发,并在2012年11月开源.? Rx库支持.NET.JavaScript和C++等,现在已经支持几乎全部的流行编程语言了.? Rx的大部分语言库由ReactiveX这个组织负责维护,比较流行的有RxJava/RxJS/Rx.NET,社区网站是 reactivex.io.? Rx