一、前言:

不管在PyQt还是Qt开发中,信号和槽都是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。

在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。

所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,其不需要知道有没有人接收它发出去的信息。

槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不需要了解具体的通信机制。

单个的槽可以和很多信号进行连接,同样,单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。

二、知识补充

在学习信号与槽相关的知识之前,我们先学习一些相关的名次和逻辑

信号与槽通信过程中涉及到:信号(Signal)、槽(slot)、连接(connect)、动作事件(action)、发射(emit)、发送者、接受者。

三、自定义信号与槽

有关信号与槽的使用我们就不多说了,在之前的案例说我们已经开始使用,本次我们说说如何自定义信号与槽呢?

自定义信号的一般流程如下:1、定义信号

2、定义槽函数

3、绑定信号和槽

4、发射信号我们再来看一段代码

更多分享:www.cherylgood.cn 交流请加群:479548645

更多分享:www.cherylgood.cn 交流请加群:479548645

运行结果为:

更多分享:www.cherylgood.cn 交流请加群:479548645

代码解析:

易错点:定义的信号成员一定要在类执行init方法之前声明,否则会报错的哦,具体原因这里就不再深入,感兴趣的同学可以给我留言,一起讨论。

如:signalempty = pyqtSignal(name=‘signalempty’); 定义一个无参数的信号、名字为signal_empty。

然后我们声音一个槽函数,handletriggerempty,声明好之后调用connect进行连接,然后信号执行emit就可以发出信号了。

是不是很简单呢?

其实有些知识看似很复杂,一旦入门了,后面再学就很容易了。

希望本篇文章能帮助到你,谢谢。

更多分享:www.cherylgood.cn

@著作权归作者所有,转载请联系作者 用心写好每一篇文章

小伙伴们有什么好的建议都可以给我留言哦!

如果看到了这里,说明你已经看完了,感谢你的支持

喜欢就点一下哦,谢谢!

python如何和qt交互_Python 之Pyqt5操作交互处理,原来这么简单!相关推荐

  1. python qt5 增加文本框_Python用PyQt5制作弹出式输入框,Qt图形界面编程之QInputDialog...

    前面内容,我们介绍了PyQt5的一些常用基本控件. 温故而知新 计数器QSpinBox使用详解,Python用PyQt5制作图形界面基础控件篇 Python用PyQt5实现多种弹出消息框,QMessa ...

  2. python绘制散点图的函数_Python用PyQt5绘制多彩随机散点图,基本控件之QPainter使用详解...

    前面内容,我们详细介绍了PyQt5中弹出式对话框. 回顾下精彩内容 Python用PyQt5制作颜色对话框,PyQt图形界面编程之QColorDialog Qt图形界面编程之QFileDialog类, ...

  3. python label控件背景色_python之pyqt5通过按钮改变Label的背景颜色方法

    python之pyqt5通过按钮改变Label的背景颜色方法 使用setStyleSheet方法修改得到自己想要的字体,大小,颜色 self.lab = QLabel("标签字体大小颜色&q ...

  4. python制作系统程序与html交互_python+html语音人物交互_flask后台与前端(html)交互的两种方法...

    基于python flask框架搭建web flask后台与前端(html)交互的两种方法: 方法1 使用flask-wtf 提供的表单 用常见的登录为例: // An highlighted blo ...

  5. python怎么模拟浏览器交互_python+webdriver 模拟用户交互工具

    概述: 使用webdriver(引用摘抄于"Python模拟登陆万能法-微博|知乎" 使用selenium库 步骤: 安装webdriver: Windows: pc:chrome ...

  6. python与cad交互_python 使用pyautocad操作AutoCAD

    一.python 连接AutoCAD的两种基本方法 1.使用pyautocad from pyautocad import Autocadpyacad = Autocad(create_if_not_ ...

  7. python 语音交互_Python调用WIN10语音交互+识别+控制+自定义对话

    1 安装库文件 2修改两个地方 最简单的 # 将输入文字转化为语音信号输出 import speech while True: speech.say("请输入:") str = i ...

  8. python和arduino的关系_Python与Arduino进行交互

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 什么是Arduino? Arduino是一款拥有多个输入输出端的开源开放式硬件可编程控制器,下图展示的是A ...

  9. python写服务器端qt客户端_python写一些简单的tcp服务器和客户端

    代码贴上,做个记录 TcpClient # -*- coding:utf-8 -*- import socket target_host = "127.0.0.1" #服务器端地址 ...

最新文章

  1. 数组-删除排序数组中的重复项(双指针法)
  2. Struts2教程2:处理一个form多个submit
  3. Linux ubuntu 修改终端【普通用户、root用户】命令(命令行)配色(颜色)(命令行自动计数)(/etc/profile)(~/bashrc)(source命令)
  4. 文件传送到服务器的软件,远程服务器文件传输软件
  5. openstack 中国联盟公开课參会总结
  6. jQuery实现的向下推送图文信息滚动效果
  7. curl 没有到主机的路由_安装RaspAP将树莓派变身为无线路由器
  8. php集成环境、基础标记符
  9. C# 子类实例化基类 基类使用不了子类的方法_C# 接口与抽象类实例分析
  10. 在线html编辑器 菜鸟,菜鸟教程
  11. 新浪微博API错误代码说明对照表
  12. 不下心删了线上环境mysql数据库数据,辛亏有惊无险
  13. html微信朋友圈demo,Vue.js实现模拟微信朋友圈开发demo
  14. 同城跑腿微信小程序制作步骤_分享下同城跑腿小程序的作用
  15. SpringBoot实现导出Excel功能
  16. 安卓九宫格上传图片(微信朋友圈,QQ动态)小demo
  17. 大学计算机课读书笔记,信息技术读书笔记
  18. 计算机网络协议(二)——从二层到三层
  19. 开源正在蚕食整个世界?
  20. 计算机的可持续发展问题,可持续发展视角下的计算机教育优化

热门文章

  1. linux SPI分析
  2. RabbitMQ实现RPC
  3. 【AI视野·今日Robot 机器人论文速览 第十九期】Mon, 5 Jul 2021
  4. Shell中计算模块 bc的使用
  5. DbHelper重用性方案 优化工具类 jdbc
  6. requests-发送post请求
  7. 爬虫-request库-get请求
  8. python-for循环与while循环
  9. python-循环-通过while循环完成一个电子钟的模拟
  10. linux-安装-MySQL