pyqt4 信号与槽方式

转载 2016年06月01日 13:44:29

本实例实现一个"Hello Kitty!"例子,简单介绍Qt编程的基本流程,以及Qt程序的编绎运行方式,实例效果图如图所示。

 

这是一个简单的例子,整个对话框只有一个按钮,单击该按钮,对话框关闭,退出程序。

实现代码如下:

 

[python] view plaincopy
  1. from PyQt4.QtGui import *  
  2. from PyQt4.QtCore import *  
  3. import sys  
  4.   
  5. app=QApplication(sys.argv)  
  6. b=QPushButton("Hello Kitty!")  
  7. b.show()  
  8. app.connect(b,SIGNAL("clicked()"),app,SLOT("quit()"))  
  9. app.exec_()  

 

第1行导入PyQt4.QtGui的所有类及模块,包括QApplication,所有Qt图形化应用程序都必须包含此文件,它包含了Qt图形化应用程序的各种资源,基本设置,控制流以及事件处理等。

第5行新创建了一个QApplication对象,每个Qt应用程序都必须有且只有一个QApplication对象,采用sys.argv作为参数,便于程序处理命令行参数。

第6行创建了一个QPushButton对象,并设置它的显示文本为“Hello Kitty!”,由于此处并没有指定按钮的父窗体,因此以自己作为主窗口。

第7行调用show()方法,显示此按钮。控件被创建时,默认是不显示的,必须调用show()函数来显示它。

第8行的connect方法是Qt最重要的特征,即信号与槽的机制。当按钮被按下则触发clicked信号,与之相连的QApplication对象的槽quit()响应按钮单击信号,执行退出应用程序的操作。关于信号与槽机制在本实例最后将进行详细的分析。

最后调用QApplication的exec_()方法,程序进入消息循环,等待可能输入进行响应。Qt完成事件处理及显示的工作,并在应用程序退出时返回exec_()的值。

最后执行程序即可出现上图所示的对话框,一个简单的Hello Kitty!例子完成。

信号与槽机制作为Qt最重要的特性,提供了任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数。例如,要将一个窗口中的变化情况通知给另一个窗口,则一个窗口发送信号,另一个窗口的槽接收此信号并进行相应的操作,即可实现两个窗口之间的通信。这比传统的图形化程序采用回调函数的方式实现对象间通信要简单灵活得多。每个Qt对象都包含预定的信号和槽,当一某一特定事件发生时,一个信号被发射,与信号相关联的槽则会响应信号完成相应的处理。

信号与槽机制常用的连接方式为:

connect(Object1,SIGNAL(signal),Object2,SLOT(slot))

signal为对象Object1的信号,slot为对象Object2的槽,Qt的窗口部件都包含若干个预定义的信号和若干个预定义的槽。当一个类被继承时,该类的信号和槽也同时被继承。开始人员也可以根据需要定义自己的信号和槽。

信号与槽机制可以有多种连接方式,下图描述了信号与槽的多种可能连接方式。

1.一个信号可以与另一个信号相连

connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1))

即表示Object1的信号1发射可以触发Object2的信号1发射。

2.表示一个信号可以与多个槽相连

connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2))

connect(Object1,SIGNAL(signal2),Object3,SLOT(slot1))

3.表示同一个槽可以响应多个信号

connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2))

connect(Object3,SIGNAL(signal2),Object2,SLOT(slot2))

相关文章推荐

PyQt4 学习笔记4之事件与信号

PyQt4中的事件与信号单击此处查看原文。 本节主要讲述PyQt4编程中出现的事件与信号。1 事件所有的GUI应用程序都是基于事件驱动的。事件主要由应用程序的用户产生,但也可以由其他方式生成:比如,...
  • Kai_gai
  • Kai_gai
  • 2015年10月31日 18:51
  • 3887

PyQt4 信号和槽用法总结

PyQt4 信号和槽用法总结

PyQt4入门教程(5)_事件与信号

注:文中译者的话将用方括号【】标出。在这一部分的学习中,我们将会探索应用中将会出现的时间与信号(events and signals)。事件(Events)所有的GUI应用都是由事件驱动的,这些事件主...

PyQt4的信号与插槽中简单实例源码讲解

#coding=utf8 ''' 每个GUI库都提供有发生事件(event)的详细信息,例如鼠标点击、按键。 例如,如果有一个带有"Click Me"文本的按钮(button),用户点击该按钮, 各种...

pyqt4信号与槽之间参数传递

这个是网上找到信号与槽之前传参的例子,希望对大家有用。   import sys from time import time from PyQt4.QtCore import * ...

Pyqt5系列(七)-信号与槽机制

信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。 在l...

PyQt之玩转signal(信号)与slot(槽)一:介绍及简单实例

信号与槽机制作为Qt最重要的特性,提供了任意两个Qt**对象**之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数。每个Qt对象都包含预定的信号和槽,当一某一特定事...

python3+PyQt5 创建网络应用-TCP客户端和TCP服务器

本文通过python3+PyQt5实现《python Qt GUI快速编程》第18章的例子Building Services application。本例分别创建一个TCP客户端和TCP服务器,采用P...

PyQt4 信号和槽用法总结

原文地址 原文 http://neteue.com/article/pyqt4-signal-slot/ 信号与槽的例子 可以使用QObject.connect方法来连接信号与槽 #! /...

PyQt5(4)——控件事件响应与信号槽

事件(Events)是 GUI 程序中很重要的一部分,它由用户操作或系统产生。当我们调用程序的 exec_()方法时,程序就会进入主循环中。主循环捕获事件并将它们发送给相应的对象进行处理。 为此,Qt...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pyqt4 信号与槽方式
举报原因:
原因补充:

(最多只允许输入30个字)