PYQT5-自定义事件

from PyQt5.QtCore import QEvent, QObject
from PyQt5.QtWidgets import QApplication
import sys# 自定义事件类
class CustomEvent(QEvent):# PYQT5 预留给用户自定义事件类型的起点为 QEvent.User=1000custom_event_type = QEvent.registerEventType()# 也可以这样写# custom_event_type = QEvent.User + 1def __init__(self):super().__init__(CustomEvent.custom_event_type)self.send_data = None# 配置发送事件时附带的数据(可选)def init_send_data(self, send_data):self.send_data = send_data# 自定义事件接收者类
class CustomEventReceiver(QObject):# 如果不是直接继承自 QObject 则只能重写该方法# 如果是直接继承自 QObject 则可以选择以下任意一种def event(self, event):if event.type() == CustomEvent.custom_event_type:print('[事件消息]: ', event.send_data)return Trueelse:return False# 该方法专门用于处理自定义事件# 只有直接继承自 QObject 的类可以重写该方法# 自定义事件如果依附于新的类(继承自QObject)且仅有一种自定义事件,则代表它不会有其它多余的事件,既然只有一个事件,就不需要判断事件类型了def customEvent(self, event):# 若只有一种自定义事件类型,则可以省略类型判断if event.type() == CustomEvent.custom_event_type:print('[事件消息]: ', event.send_data)if __name__ == '__main__':app = QApplication(sys.argv)# =================================发送自定义事件-BEG=================================# 创建自定义事件custom_event = CustomEvent()#   为自定义事件设置传输数据info = '随事件发送的数据'custom_event.init_send_data(info)# 创建事件接收者event_reveiver = CustomEventReceiver()# 发送事件# 任何 QCoreApplication 或其子类的对象都可以执行 sendEvent | postEvent 发送事件#   sendEvent-该方法将立即发送事件,并且当前线程会被阻塞直到事件处理完成(适用于实时性较高的场景)#   postEvent-该方法将事件放在事件队列中,然后立即返回,事件会在事件循环的下一个周期中被处理(适用于实时性不高的场景)# 事件对象处理后会被销毁,所以需要在每次循环中创建新的事件对象,并发送该新对象,保证每个事件对象只被处理一次# app.sendEvent(event_reveiver, custom_event)app.postEvent(event_reveiver, custom_event)# =================================发送自定义事件-END=================================sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485088.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV人脸检测案例实战

人脸检测是一种计算机视觉技术,旨在识别图像或视频中的人脸。这项技术的基本内容包括使用特定的算法和模型来定位和识别人脸,通常涉及在图像中寻找面部特征,如眼睛、鼻子、嘴巴等,以便准确地确定人脸的位置和边界。人脸检测技术的…

【青龙】快速搭建青龙面板,部署属于你自己的应用!

青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说,直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址:https://www.rainyun.com/ 优惠码:lz932 使用优惠码注册后绑定微信可获得8折…

蓝桥杯:C++模运算、快速幂

模运算 模运算是大数运算中的常用操作。如果一个数太大,无法直接输出,或者不需要直接输出,则可以对它取模,缩小数值再输出。取模可以防止溢出,这是常见的操作。 模是英文mod的音译,取模实际上是求余。 取…

基于SpringBoot的在线拍卖系统设计与实现(源码+调试+LW+PPT)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的在线拍…

SQL Server —— While语句循环

一:简介 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。 while: break, 如果有多条语句可以在while后面添加begin-end。关于while的语法 while(条件) -- begin -- 语句1 -- 语句2 -- break 根据情况是否添加break -- end 二…

QT基本组件

四、基本组件 Designer 设计师(重点) Qt包含了一个Designer程序,用于通过可视化界面设计开发界面,保存文件格式为.ui(界面文件)。界面文件内部使用xml语法的标签式语言。 在Qt Creator中创建文件时&#xf…

学习JAVA的第三天(基础)

目录 流程控制语句 顺序结构 分支结构 循环结构 分类: 练习 跳转控制语句 练习 数组 数组介绍 数组的定义和静态初始化 数组定义 数组的静态初始化 数组元素访问 数组遍历 数组动态初始化 JAVA内存分配 流程控制语句 顺序结构 是Java程序默认的执行流程…

8:00面试,8:05就出来了 ,问的实在是....

从外包出来,没想到竟然死在了另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以我也就忍了。没想到12月一纸通知,所有人都不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个…

基于SpringBoot的CSGO赛事管理系统源码和论文

CSGO赛事管理系统是针对CSGO赛事管理方面必不可少的一个部分。在CSGO赛事管理的整个过程中,CSGO赛事管理系统担负着最重要的角色。为满足如今日益复杂的管理需求,各类的管理系统也在不断改进。本课题所设计的CSGO赛事管理系统,使用java进行开…

郑板桥的人生境界是难得糊涂

郑板桥是康熙秀才,雍正举人,乾隆进士。 郑板桥小时候跟父亲在真州读书,长大后在真州教书。后来,郑板桥去扬州卖画谋生。 郑板桥没有老师,画画靠自己琢磨。郑板桥一生画竹,画了四十年的竹子,主…

kubernetes之operator开发及informer机制源码分析

一、什么是operator? 在Kubernetes中我们经常使用 Deployment、DaemonSet、Service、ConfigMap 等资源,这些资源都是Kubernetes的内置资源,而对这些资源的创建、更新、删除的动作都会被称为事件(Event),Kubernetes 的 Controller…

掌握这些测试开发技能,从容应对工作难题!

各位小伙伴, 大家好, 本期为大家分享一些测试开发工程师在企业中通过哪些测试开发技能解决难题。 一.如何定位缺陷 在企业中, 小伙伴们在发现bug后, 需要定位到具体产生bug的原因, 在这种情况下, 我们可以通过以下几种方案: 1.通过代理抓包来分析 常用的抓包工具有: Charle…