当前位置: 首页 > news >正文

婚纱网站建设微信群动漫制作专业在国企

婚纱网站建设微信群,动漫制作专业在国企,WordPress分类id在哪,wordpress模板搬迁pyqt事件机制 一、什么是pyqt事件机制#xff1f; ​ 事件是指用户操作或系统发生的各种动作#xff0c;比如鼠标点击、键盘输入、窗口大小变化等。事件可以由用户或操作系统触发#xff0c;然后被传递给应用程序进行处理。PyQt的事件机制通过事件循环#xff08;Event L…pyqt事件机制 一、什么是pyqt事件机制 ​ 事件是指用户操作或系统发生的各种动作比如鼠标点击、键盘输入、窗口大小变化等。事件可以由用户或操作系统触发然后被传递给应用程序进行处理。PyQt的事件机制通过事件循环Event Loop和事件过滤器Event Filter来实现。 ​ 事件循环是PyQt应用程序的核心机制它负责接收事件、分发事件和调用对应的事件处理函数。事件循环不断地从操作系统接收事件并将它们分发给应用程序的对象。每个对象都可以通过重写对应的事件处理函数来响应不同类型的事件。 ​ 事件过滤器允许应用程序在事件到达目标对象之前对事件进行拦截和处理。通过设置事件过滤器应用程序可以截获事件并在处理前进行一些操作比如修改事件的属性、过滤掉不需要的事件等。 ​ 总之信号与槽机制是对事件机制的高级封装事件机制更偏向于底层。 二、图解事件机制的流程 注由于是浅析不对事件过滤做过多描述会在后续再进行详细研究。 1、循环检查消息队列 不断的按顺序检测消息队列中是否有消息如果发现”事件消息”则会包装成“QEvent 对象”进行分发处理 2、单次循环流程 三、利用代码简单演示事件机制流程 1、基础代码 import sys from PyQt5.Qt import *app QApplication(sys.argv)window QWidget()btn QPushButton(window) btn.setText(自定义按钮) btn.move(100, 100)def onPressed():print(按钮被点击了)btn.pressed.connect(onPressed)window.show()sys.exit(app.exec_())程序实现的基本功能自定义一个按钮点击后在控制台打印信息。如下为演示图 2、重写QApplication的notify方法 修改的代码 import sys from PyQt5.Qt import *# 添加自定义类继承QAoolication重写notify方法 class MyApp(QApplication):def notify(self, receiver, evt) - bool:# 由于事件比较多需要过滤一些事件if receiver.inherits(QPushButton) and evt.type() QEvent.MouseButtonPress:print(1. 鼠标被按下了evt, evt)return super(MyApp, self).notify(receiver, evt)app MyApp(sys.argv)#修改为自己的类window QWidget()btn QPushButton(window) btn.setText(自定义按钮) btn.move(100, 100)def onPressed():print(按钮被点击了)btn.pressed.connect(onPressed)window.show()sys.exit(app.exec_())演示图 3、重写QPushButton的event方法 修改的代码 import sys from PyQt5.Qt import *class App(QApplication):def notify(self, recevier, evt):if recevier.inherits(QPushButton) and evt.type() QEvent.MouseButtonPress:print(recevier, evt)return super().notify(recevier, evt)class Btn(QPushButton):def event(self, evt):if evt.type() QEvent.MouseButtonPress:print(evt)return super().event(evt)def mousePressEvent(self, *args, **kwargs):print(鼠标被按下了......)# return super().mousePressEvent(*args, **kwargs)app App(sys.argv)window QWidget()btn Btn(window) btn.setText(按钮) btn.move(100, 100)def cao():print(按钮被点击了)btn.pressed.connect(cao)window.show()sys.exit(app.exec_())演示图 4、重写QPushButton的mousePressEvent方法 修改的代码 import sys from PyQt5.Qt import *# 添加自定义类继承QAoolication重写notify方法 class MyApp(QApplication):def notify(self, receiver, evt) - bool:# 由于事件比较多需要过滤一些事件if receiver.inherits(QPushButton) and evt.type() QEvent.MouseButtonPress:print(1. 鼠标被按下了evt, evt)return super(MyApp, self).notify(receiver, evt)# 添加自定义按钮类继承QPushButton重写event方法 class MyBtn(QPushButton):def event(self, event) - bool:if event.type() QEvent.MouseButtonPress:print(2. 鼠标被按下了evt, event)return super(MyBtn, self).event(event)#重写mousePressEvent方法def mousePressEvent(self, event) - None:print(3. 鼠标被按下了evt, event)return super(MyBtn, self).mousePressEvent(event)app MyApp(sys.argv)#修改为自己的类window QWidget()btn MyBtn(window)#修改为自己的类 btn.setText(自定义按钮) btn.move(100, 100)def onPressed():print(按钮被点击了)btn.pressed.connect(onPressed)window.show()sys.exit(app.exec_())演示图 四、总结 ​ 根据我的理解pyqt的事件机制主要分为下面过程 1. 事件进入消息队列循环中处理每次循环收集到的事件2. 事件传递* 顶端的QApplication用notify接收事件并区分控件类型分发给正确的控件receiver* receiver接收到事件后由event方法进行二次分发传递给正确的处理方法如本例的mousePressEvent方法* 若绑定了信号与槽对应的处理方法继续传递发送信号调用对应的槽函数。
http://www.huolong8.cn/news/16947/

相关文章:

  • 效果型网站建设wordpress整合dplayer插件
  • 外贸网站怎么做站长之家查询域名
  • 简洁网站欣赏成都市建筑设计研究院有限公司
  • 论坛类网站如何备案搜索推广是什么
  • 网站开发的形式有( )怎么仿制网站
  • 上海自助建站手机网站不收录
  • 外贸一般在哪些网站凡客诚品商品来源
  • 昆山网站开发建设公司做网站用的什么服务器吗
  • 老域名对做网站的宁波免费建站外包公司
  • 网站建设2018域名网安备案
  • 广东成都网站建设推广公司小程序二次开发多少钱
  • 搜索引擎网站提交网站一个人可以做吗
  • 做网站需要的照片购物商城类网站备案
  • 网站母版页怎么做杭州旅游网站建设
  • 北京市两学一做网站wordpress 一键 样式
  • 东营建网站公司河南郑州天气预报15天
  • 企业网站 需求网页视频下载快捷指令库
  • 综合性电子商务网站有哪些编写网站 语言
  • 浙江省城乡住房建设网站深圳市建筑人才网
  • 网站开发html文件规范asp是网站开发吗
  • wdcp上传网站站长工具seo综合查询权重
  • 南充网站建设制作成都html5网站设计
  • 深圳网站设计公司的广告策划书籍
  • 上海电商网站设计电脑怎么下载网页视频
  • 关键词查找网站logo标志设计网
  • 万网网站后台管理系统厚街镇网站建设
  • 网站建设需ps如何做网页设计
  • 医院官方网站建设网络推广网站制作
  • 按月付费网站建设国内网站建设公司
  • 网站制作技术支持辽阳内蒙古网站建设