python之pyqt专栏11-事件(QEvent)

news2025/1/15 21:28:45

QApplication.exec()

        在main.py中,实例化app对象,然后在 sys.exit(app.exec())中调用app.exec(),

if __name__ == '__main__':
    # 实例化应用
    app = QApplication(sys.argv)
    # 实例化MyMainForm
    myw = MyMainForm()
    myw.show()
    # 启动应用程序的事件循环并等待用户交互,直到应用程序关闭。
    sys.exit(app.exec())

        当调用app.exec()时,进入主函数事件循环并且等待exit()调用。当exit()被调用时,app.exec()的返回值会被exit() 设置。

         exec()函数的逻辑结构伪代码

def exec():
    while True:
        #main events loop
        pass
    
    return  exit()

         主要事件循环从窗口系统接收事件,然后将这些事件分发到应用程序小部件。  部件通过被调用它们的 event() 函数来接收事件。

QObject.event()

              QWidget继承于QObjectQObject在里面有event函数的描述,用户可以重写event 

QEvent 

        在QEvent有两个函数常用到,也就是accept()和 ignore(),设置事件接收器是否接收或者清除事件标志,默认QEvent被设置为“accept”标志

     

需求

        实现点击窗口的“X”按钮,关闭不了窗口

方法一:重写event函数
    def event(self, a0):
        if(a0.type()==QEvent.Type.Close):
            a0.ignore()
            return True #一定要加上否者会出错
        else:
            return super().event(a0)  # 调用基类的 event() 函数处理其他事件

        注event,需要有返回值否者会出错。 

方法二:重写closeEvent函数
    # # 重写event事件
    def closeEvent(self, a0):
            print("widget, close event")
            a0.ignore()

实现

 

event与closeEvent函数的关系

    # # 重写event事件
    def closeEvent(self, a0):
            print(f"{a0.type()}, closeEvent")


    def event(self, a0):
        if(a0.type()==QEvent.Type.Close):
            print("event")
            super().event(a0)
            return True #一定要加上否者会出错
        else:
            return super().event(a0)  # 调用基类的 event() 函数处理其他事件

          在上面的代码执行中,可以看到先执行event,在再执行closeEventevent调用了父类的eventQEvent按照之前的路径传递。QEvent会被传递到closeEvent,这时a0.type()只有一个类型。

        因此当事件类型 = QEvent.Type.Close,无论是event中清除标记(调用a0.ignore()),还是在closeEvent清除标记(调用a0.ignore()),都是清除一样的标记。

    

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app一些目录结构、方法、生命周期、打包、微信小程序登录与支付

1、关于uniapp的目录结构 跟普通vue项目目录结构差不多,多了几个核心文件,manifest.json是配置应用名称、appid、logo、版本等打包信息用的,pages.json的作用是配置页面路径、页面窗口样式、tabBar、navigationBar等页面类信息 2、页面适配方…

c语言-归并排序

目录 1、归并排序基本思想 2、归并排序的实现(递归法) 2.1 代码实现递归法归并排序 3、归并排序的实现(非递归法) 3.1 修正边界问题 3.2 代码实现非递归法归并排序 结语: 前言: 归并排序是一种把数…

go并发编程(中)

目录 一、并发安全性 1.1 变量并发安全性 1.2 容器并发安全性 二、多路复用 三、协程常见的面试题 3.1交替打印奇数偶数 一、并发安全性 1.1 变量并发安全性 这个和C中并发安全是一样的,主要是多个线程对临界资源的同时访问,最经典的就是 n操作…

MQ - 消息系统

消息系统 1、消息系统的演变 在大型系统中,会需要和很多子系统做交互,也需要消息传递,在诸如此类系统中,你会找到源系统(消息发送方)和 目的系统(消息接收方)。为了在这样的消息系…

Java 连接数据库

数据库:存储数据(集中管理) 目的: 文件中的数据能够放在数据库中集中管理 管理方法:一个项目一个库,每个库中包含最小化数据的表 开发: 节省存储空间,节省运行空间,采…

【富文本编辑器】原生JS使用WangEditor和vue上传图片前后端demo

【富文本编辑器】原生JS使用WangEditor上传图片前后端demo 第一步 HTML 第二步 初始化WangEditor与图片上传回调函数 第三步 后端返回数据体封装 第四步 后端接口上传图片,并返回图片地址 最近,我遇到了这样一个问题:因为我们的项目是基于…

SDGAN:一种用于低剂量CT图像重建的新型空间可变形生成对抗性网络

SDGAN: A novel spatial deformable generative adversarial network for low-dose CT image reconstruction SDGAN:一种用于低剂量CT图像重建的新型空间可变形生成对抗性网络背景贡献实验方法The conformer-based generatorThe dual-scale discriminatorThe spatia…

C/S与B/S的区别

B/S与C/S理解 C/S结构B/S结构问题数据放在服务器端与客户端的利弊 C/S结构 客户端:用户安装的软件 服务端:统一管理数据库的主机中的软件 叫做服务端。 B/S结构 用户通过浏览器实现(往往表示业务逻辑在前端进行实现,主要业务逻…

栈和队列的OJ题——14.用栈实现队列

14.用栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) /* 解题思路: 此题可以用两个栈实现,一个栈进行入队操作,另一个栈进行出队操作 出队操作: 当出队的栈不为空是,直接进行出栈操作&#xff…

基于SSM的网上手机销售系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

OpenSSH(CVE-2023-38408)OpenSsh9.5一键升级修复

yum install -y git cd /root git clone https://gitee.com/qqmiller/openssh-9.5p1-.x86_64.git cd openssh-9.5p1-.x86_64/ bash openssh_update.sh重启sshd: systemctl restart sshd 查看sshd状态: systemctl status sshd 重要的是按此操作升级完成…

一文彻底弄懂动态规划【DP】

动态规划是一种重要的算法,它能解决很多看似复杂的问题,关键在于找到问题的子问题结构,并根据子问题的解决方式来解决原问题。首先要了解的是动态规划的基本思想: 动态规划的基本思想是:将一个复杂的问题分解为一系列…

SpringBootAdmin

SpringBootAdmin 文章目录 SpringBootAdmin创建SpringBootAdmin服务端创建SpringBootAdmin客户端启动应用 总结 github地址 https://github.com/codecentric/spring-boot-admin 可以查到所有的版本号 创建SpringBootAdmin服务端 创建springBoot项目的时候,在ops选项…

图文并茂教你模拟302接口,实现js中axios,fetch遇到302状态码后跳转的多种方案axios,fetch成功响应拦截302

前情提要 日常工作中,我们会使用fetch,或者axios发起请求来获取数据,但是当我们遇到一些特殊需求的时候,使用不同库之后,会得到不同的结果,例如302,308的状态码,那么我们应该怎么处理这两种情况呢&#xf…

【Linux】第二十六站:软硬链接

文章目录 一、软链接二、硬链接三、ln命令四、该如何理解硬链接?五、如何理解软链接六、为什么要用软硬链接1.软链接的应用场景2.硬链接的应用场景 一、软链接 如下所示,我们创建一个文件以后,然后执行下面的指令 ln -s file.txt soft-link…

Prime 2.0

信息收集 # Nmap 7.94 scan initiated Thu Nov 23 20:09:06 2023 as: nmap -sn -oN live.nmap 192.168.182.0/24 Nmap scan report for 192.168.182.1 Host is up (0.00018s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.182.2 Host is u…

P-Tuning v2论文概述

P-Tuning v2论文概述 P-Tuning v2论文概述前言微调的限制性P-Tuning的缺陷P-Tuning v2 摘要论文十问NLU任务优化点实验数据集预训练模型实验结果消融实验 结论 P-Tuning v2论文概述 前言 微调的限制性 微调(fine-tuning)是一种在预训练模型基础上进行目…

使用 Kettle 完成数据 ETL

文章目录 使用 Kettle 完成数据 ETL数据清洗数据处理 使用 Kettle 完成数据 ETL 现在我们有一份网站的日志数据集,准备使用Kettle进行数据ETL。先将数据集加载到Hadoop集群中,然后对数据进行清洗,最后加载到Hive中。 在本地新建一个数据集文…

Active Stereo Without Pattern Projector论文精读

1.背景补充 主动立体相机和被动立体相机的主要区别在于它们获取立体视觉信息的方式 主动立体相机12: 主动立体视觉是指寻找最佳的视角去重建目标或者场景1。主动视觉的实现方式通常有:改变环境中的光照条件、改变相机的视角、移动相机自身位置等&…

大模型中幂律缩放法则和涌现能力

幂律缩放法则是一种用于描述两个变量之间关系的数学模型。 根据幂律缩放法则,当一个变量的值变化时,另一个变量的值以指数方式变化。具体而言,幂律缩放法则可以表示为Y a * X^b,其中Y表示一个变量的值,X表示另一个变…