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一个button对应一个slot(插槽)实例源码讲解

#coding=utf8 ''' 这个实例中实现,一个slot连接两个或者多个信号,而且具有不同的slot行为。 这个实例中包括5个button和一个label,当其中任何一个button被点击, 信...
  • henni_719
  • henni_719
  • 2017年05月12日 09:25
  • 630

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

事件(Events)是 GUI 程序中很重要的一部分,它由用户操作或系统产生。当我们调用程序的 exec_()方法时,程序就会进入主循环中。主循环捕获事件并将它们发送给相应的对象进行处理。 为此,Qt...
  • xmnathan
  • xmnathan
  • 2016年03月29日 15:08
  • 3726

pyQt不同窗体间的值传递(二)——使用信号槽机制

使用QT编程的精髓就在于信号槽机制的灵活运用,信号和槽机制可以使互不相关的对象绑定在一起,实现对象之间的通信。     QT通过信号槽来传递和相应消息,与windows下消息机制相比,消息机...
  • shawpan
  • shawpan
  • 2015年07月16日 20:36
  • 3508

py2.7+pyqt4+Eric4 完美桌面开发配置

【配置环境】 第一步:安装python包 Python 下载 python官网: http://www.python.org/  第二步:安装py...
  • zsxy2007
  • zsxy2007
  • 2015年12月21日 16:13
  • 1011

PyQt4 信号和槽用法总结

PyQt4 信号和槽用法总结
  • jxm_csdn
  • jxm_csdn
  • 2016年06月10日 19:33
  • 3986

PyQt4 信号和槽用法总结

PyQt4 信号和槽用法总结
  • jxm_csdn
  • jxm_csdn
  • 2016年06月10日 19:33
  • 3986

pyqt4信号与槽之间参数传递

这个是网上找到信号与槽之前传参的例子,希望对大家有用。   import sys from time import time from PyQt4.QtCore import * ...
  • oMingZi12345678
  • oMingZi12345678
  • 2013年07月08日 09:45
  • 1656

PyQt4+fedora20

确切的说是qt5.4+sip4.16+pyqt5+(g++)的安装。 安装sip 安装qt安装sip:首先从riverbank上下载pyqt5(5.4),SIP 4.1.6.安装qt:...
  • u014565040
  • u014565040
  • 2015年03月10日 12:12
  • 322

PyQt4一个button对应一个slot(插槽)实例源码讲解

#coding=utf8 ''' 这个实例中实现,一个slot连接两个或者多个信号,而且具有不同的slot行为。 这个实例中包括5个button和一个label,当其中任何一个button被点击, 信...
  • henni_719
  • henni_719
  • 2017年05月12日 09:25
  • 630

pyqt中信号与槽的参数传递。

摘自  http://www.cnblogs.com/caomingongli/archive/2011/09/19/2180904.html pyqt中信号与槽的参数传递。 当信号与...
  • huhuliuxia
  • huhuliuxia
  • 2016年01月07日 19:26
  • 2491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pyqt4 信号与槽方式
举报原因:
原因补充:

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