PyQt5系列教程(四)信号和槽
软硬件环境
- OS X EI Capitan
- Python 3.5.1
- PyQt 5.5.1
前言
信号(Signal)和槽(Slot)是Qt编程中对象间通讯的机制。在Qt中,每一个QObject对象,包括PyQT中所有继承自QWidget的控件(因为它们都是QObject的子对象)都支持signal和slot机制。
signal和slot绑定
还是以之前的firstPyQt5工程为例,
self.pushButton.clicked.connect(self.firtPyQt5_button_click)
上面的代码表明当按钮pushButton(QPushButton是QWidget的子类)被点击(释放clicked信号)时,slot(firtPyQt5_button_click)会被执行。
同一signal绑定多slot
PyQt5允许一个signal同时绑定多个slot,如
self.pushButton.clicked.connect(self.firtPyQt5_button_click)
self.pushButton.clicked.connect(self.firtPyQt5_button_click_2)
从执行结果上看,slot执行的顺序是跟绑定的顺序一样的,即先绑先执行。另外对于多个signal绑定同一slot的情况,比较容易理解,就不多说
一个signal绑定另一个signal
还有种特殊的情况是signal和signal绑定,这里假设还有一个QPushButton pushButton1,我们让它的clicked信号和pushButton的信号clicked相绑定,如下
self.pushButton.clicked.connect(self.firtPyQt5_button_click)
self.pushButton1.clicked.connect(self.pushButton.clicked)
signal的解绑
PyQt5提供了disconnect方法来进行解绑
self.pushButton1.clicked.disconnect(self.pushButton.clicked)
self.pushButton.clicked.disconnect(self.firtPyQt5_button_click_2)
自定义signal
PyQt5提供了QtCore.pyqtSignal函数来产生一个signal,之后就是熟悉的绑定操作了,看个实例就清楚了
class EmitSignal(QWidget):
def __init__(self):
super(EmitSignal,self).__init__()
self.customSignal = pyqtSignal()
def emitCustomSignal(self):
self.customSignal.emit()
PyQt5系列教程(四)信号和槽的更多相关文章
- PyQt5系列教程
PyQt5系列教程(一)Mac OS X下搭建Python3.5.1+PyQt5开发环境PyQt5系列教程(二)利用QtDesigner设计UI界面PyQt5系列教程(三)用py2exe进行程序打包P ...
- PyQt5系列教程(二)利用QtDesigner设计UI界面
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.1 前言 在PyQt5系列教程的第一篇http://blog.csdn.net/dj ...
- 【转】PyQt5系列教程(七)控件
PyQt5系列教程(七)控件 软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...
- C#微信公众号开发系列教程四(接收普通消息)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- NGUI系列教程四(自定义Atlas,Font)
今天我们来看一下怎么自定义NGUIAtlas,制作属于自己风格的UI.第一部分:自定义 Atlas1 . 首先我们要准备一些图标素材,也就是我们的UI素材,将其导入到unity工程中.2. 全选我们需 ...
- CRL快速开发框架系列教程四(删除数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Android Studio系列教程四--Gradle基础
Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图: 从上图我们可以 ...
- Fastify 系列教程四 (求对象、响应对象和插件)
Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) Fastify ...
随机推荐
- Linux常用命令--文件操作、权限设置
1.编辑文件 cat aaa.txt 查看aaa.txt文件的内容 head - aaa.txt 查看aaa.txt文件前5行的内容 tail - aaa.txt 展示aaa.txt文件最后10行的内 ...
- Java Spring-Bean中属性注入
2017-11-06 20:29:13 类属性的注入的三种方法 1.接口方法注入 public interface injection{ public void setName(String name ...
- Java队列的两种实现方式
1. 基于数组 package Algorithm.learn; import java.util.Arrays; /** * Created by liujinhong on 2017/3/7. * ...
- hdu 5303 DP(离散化,环形)+贪心
题目无法正常粘贴,地址:http://acm.hdu.edu.cn/showproblem.php?pid=5303 大意是给出一个环形公路,和它的长度,给出若干颗果树的位置以及树上的果子个数. 起点 ...
- UVA-10369 Arctic Network (最小生成树)
题目大意:n个村庄的坐标已知,现在要架光纤使所有的村庄都能上网,但受光纤的参数d所限,每根光纤只能给距离不超过d的村庄之间连接.但是有s个信号机,信号机之间能无限畅连.考虑到光纤的价格和参数d有关,现 ...
- localStorage(本地存储)使用总结
1.https://www.cnblogs.com/st-leslie/p/5617130.html (localStorage使用总结)
- 使用springfox+swagger2书写API文档(十八)
使用springfox+swagger2书写API文档 springfox是通过注解的形式自动生成API文档,利用它,可以很方便的书写restful API,swagger主要用于展示springfo ...
- hdu 3264 09 宁波 现场 E - Open-air shopping malls 计算几何 二分 圆相交面积 难度:1
Description The city of M is a famous shopping city and its open-air shopping malls are extremely at ...
- Java Mongodbjar包下载网址
http://mongodb.github.io/mongo-java-driver/
- 99%的人都理解错了HTTP中GET与POST的区别(转自知乎)
作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. GET和POST是HTT ...