python 波形发生_事件与信号

事件 Event

所有的GUI程序都是事件驱动的。事件主要由用户触发,但也可能有其他触发方式:例如网络连接、window manager或定时器。当我们调用QApplication的exec_()方法时会使程序进入主循环。主循环会获取并分发事件。

在事件模型中,有三个参与者:

事件源

事件对象

事件接收者

事件源是状态发生变化的对象。它会生成事件。事件(对象)封装了事件源中状态的变动。事件接收者是要通知的对象。事件源对象将事件处理的工作交给事件接收者。

PyQt5有一个独特的signal&slot(信号槽)机制来处理事件。信号槽用于对象间的通信。signal在某一特定事件发生时被触发,slot可以是任何callable对象。当signal触发时会调用与之相连的slot。

importsysfrom PyQt5.QtCore importQtfrom PyQt5.QtWidgets import(QWidget, QLCDNumber, QSlider,

QVBoxLayout, QApplication)classExample(QWidget):def __init__(self):

super().__init__()

self.initUI()definitUI(self):

lcd= QLCDNumber(self) #创建LCD数字对象

sld = QSlider(Qt.Horizontal, self) #创建滑块水平拉动

vbox= QVBoxLayout() #垂直布局管理器

vbox.addWidget(lcd) #为lcd和sld布局,因为垂直所以一上一下

vbox.addWidget(sld)

self.setLayout(vbox)

sld.valueChanged.connect(lcd.display)#这个例子中展示了一个QtGui.QLCDNumber和QtGui.QSlider。

#lcd的值会随着滑块的拖动而改变。

#在这里我们将滚动条的valueChanged信号连接到lcd的display插槽。

#sender是发出信号的对象。receiver是接收信号的对象。slot(插槽)是对信号做出反应的方法。

self.setGeometry(300, 300, 250, 150)

self.setWindowTitle('Signal & slot')

self.show()if __name__ == '__main__':

app=QApplication(sys.argv)

ex=Example()

sys.exit(app.exec_())

按键触发事件

设置按键触发,需要要到QWidget下的keyPressEvent方法,不过我们可自定制

importsysfrom PyQt5.Qt importQtfrom PyQt5.QtWidgets importQApplication,QWidgetclassExample(QWidget):def __init__(self):

super().__init__()

self.initUI()definitUI(self):

self.setWindowTitle("biao")

self.setGeometry(300,300,300,300)

self.show()def keyPressEvent(self, QKeyEvent): #自定义按键触发事件

if QKeyEvent.key() == Qt.Key_Escape: #当按键为Exs时

self.close()if __name__ == '__main__':

app=QApplication(sys.argv)

ex=Example()

sys.exit(app.exec_())

事件发送者

有时需要知道信号是由哪个控件发出的。对此PyQt5提供了sender()方法。

1 from PyQt5.QtWidgets importQMainWindow,QApplication,QPushButton2 importsys3

4 classExample(QMainWindow):5

6 def __init__(self):7 super().__init__()8

9 self.initUI()10

11 definitUI(self):12

13 btn1 = QPushButton("按钮1",self)14 btn1.move(30,30)15 btn2 = QPushButton("按钮2",self)16 btn2.move(130,30)17

18 btn1.clicked.connect(self.buttonCliked) #创立事件,当btn被点击时

19 btn2.clicked.connect(self.buttonCliked)20 self.statusBar() #用QMainWindow才能有状态栏,菜单栏,工具栏

21

22 self.setGeometry(300,300,300,300)23 self.setWindowTitle("biaobiao")24 self.show()25

26 defbuttonCliked(self):27 #通过调用sender()方法来判断信号源, 并将其名称显示在窗体的状态栏中。

28 sender = self.sender() #获取sender对象

29 self.statusBar().showMessage(sender.text()+'was pressed') #获取信号源名称

30

31 if __name__ == '__main__':32

33 app =QApplication(sys.argv)34 ex =Example()35 sys.exit(app.exec_())

发出信号

通过QObject创建的对象可以发出信号

信号要与事件连接,事件由事件管理器处理器控制

importsysfrom PyQt5.QtWidgets importQMainWindow,QApplicationfrom PyQt5.QtCore importQObject,pyqtSignalclass Communicate(QObject): #创建连接

closeAPP =pyqtSignal() #创建信号

classExmple(QMainWindow):def __init__(self):

super().__init__()

self.initUI()definitUI(self):

self.c= Communicate() #创建连接

self.c.closeAPP.connect(self.close) #信号连接事件

self.setWindowTitle("biaobiao")

self.setGeometry(300,300,300,300)

self.show()def mousePressEvent(self, event): #事件处理器

self.c.closeAPP.emit()if __name__ == '__main__':

app=QApplication(sys.argv)

ex=Exmple()

sys.exit(app.exec_())

d31284e7e7dcd5f0ef07c3bedfb38503.png

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

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

相关文章

数据结构与算法6—树

树 树的表示方式有 树形图表示法:逻辑结构描述直观 嵌套集合表示法(文氏图表示法) 凹入表示法 广义表表示法 二叉树 二叉树是另一种重要的树形结构,是度为2的有序树,它的特点是每个结点至多有两棵子树。 二叉树的递归定义 二叉树…

LNMP一键安装包在安装完成后的一些安全设置

2019独角兽企业重金招聘Python工程师标准>>> 1.修改php.ini中的 base_dir 设定为:open_basedir/home/wwwroot/:/tmp/, 这样,脚本只能在wwwroot和tmp下读取。 2.设定权限,防止跨目录列表。 chown root:root wwwroot c…

docker基础应用

环境: centos 7 docker 19.03.0-beta3 192.168.10.10 关于如何安装docker请参考:https://www.cnblogs.com/caesar-id/p/10857312.html 1、查找合适的版本 [rootlocalhost ~]# docker search centos 2、下载centos镜像 [rootlocalhost ~]#docker pull c…

java 简单数据类型_java基本数据类型

基本数据类型JAVA中一共有八种基本数据类型,他们分别是byte、short、int、long、float、double、char、boolean类型型别字节取值范围byte整型1byte-27 ~ 27-1short整型2byte-215 ~ 215-1int整型4byte-231 ~ 231-1long整型8byte-263 ~ 263-1float浮点型4byte3.402823…

Win7中IIS7.0安装及ASP环境配置

打开控制面板中“程序”: “程序”中“打开或关闭Windows功能”: 如图,安装IIS7时需要选择要使用的功能模块: IIS7安装完成之后可以在开始菜单的所有程序中看到“管理工具”,其中有一个“Internet信息服务管理器”,如果没有可以按以下步骤…

java 3number_java 数据Number、Math

一个初出茅庐的小子与大家共享一些关于Number和Math的使用,因水平有限,难免有写的不完善的地方,嘻嘻。看完之后,希望可以留下你珍贵的指导意见。The Numbers Classes在写代码的时候,也许会使用到java各种的基本数据类型…

HOG(方向梯度直方图)

结合这周看的论文,我对这周研究的Histogram of oriented gradients(HOG)谈谈自己的理解: HOG descriptors 是应用在计算机视觉和图像处理领域,用于目标检測的特征描写叙述器。这项技术是用来计算局部图像梯度的方向信息的统计值。这样的方法跟边缘方向直…

保留数据给硬盘增加分区

我的块硬盘只有一个分区,里面还有数据,但是想再划分一个区,在win10系统下是这样操作的 首先,我的硬盘的文件系统是fat32,先通过命令提示符把文件系统转换成NTFS,转换前“压缩卷”是灰色的 convert c: /fs:n…

c# 简单序列化

序列化:是将对象状态转换为可保持或传输的格式的过程,原因有两个,第一是想永久的保存这些数据,以便将来可以重建这些数据。第二是想把数据从一个应用程序域发送到另外一个应用程序域中去。反序列化:就是把存储介质中的…

windows mobile开发循序渐进(6)windows mobile device center 使用问题

由于个人中邪,在经历一次windows 7安装失败之后,贼心不死,于昨天又重新安装了windows 7,终于成功。 回到windows mobile的开发上来呢,首先是配置环境,按照之前的经验,比较顺利的安装了virtual p…

mysql 代理 a_Keepalived+Mysql+Haproxy

#dd dd0 配主从vi /etc/my.cnf[mysqld]server-id 1log-bin mysql-binbinlog-ignore-db mysql,information_schemabinlog_format mixedauto-increment-increment 2auto-increment-offset 1#ddgrant replication slave on *.* to dd192.168.55.% identified by 123456show …

你真的了解Ioc与AOP 吗?(2)

三、基于配置文件和Reflection的工厂模式 为了消除MainApp对其它组件的依赖性,我们引入工厂模式,并且根据配置文件指定的装配规程,利用.net提供的反射技术完成对象的组装工作。本部分代码仅仅提供一种功能演示,如果实际应用仍需进…

关于一道数据库例题的解析。为什么σ age22 (πS_ID,SCORE (SC) ) 选项是错的?

本人大二学子。近段时间在做数据库复习题的时候遇到一道题,如下。 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是( &#…

java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的。我们在单元测试的时候用到了 dbUnit ,dbUnit 可…

c#扩展方法奇思妙用高级篇四:对扩展进行分组管理

从系列文章开篇到现在,已经实现的很多扩展了,但过多的扩展会给我们带来很多麻烦,试看下图: 面对这么多“泛滥”的扩展,很多人都会感到很别扭,的确有种“喧宾夺主”的感觉,想从中找出真正想用的方…

Robot Framework-Ride界面介绍及库的添加

Ride界面介绍1. Ride简介1.1什么是RideRide是robotframework的UI界面, 以HTML格式提供易于阅读的结果报告和日志, 用户可以自定义基于Python的测试库, 提供支持selenium的Web测试,语法和python很像。1.2 Ride界面介绍1.2.1主界面介绍: 1.2.2运行按钮和工程目录&a…

Android项目实战(三):实现第一次进入软件的引导页

最近做的APP接近尾声了,就是些优化工作了, 我们都知道现在的APP都会有引导页,就是安装之后第一次打开才显示的引导页面(介绍这个软件的几张可以切换的图) 自己做了一下,结合之前学过的 慕课网_ViewPager切换…

LESS CSS 框架简介(转)

为什么80%的码农都做不了架构师?>>> 原文地址:http://www.ibm.com/developerworks/cn/web/1207_zhaoch_lesscss/ 简介 CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网&#…

IP通信基础 实验三

PC端配置:配置ip地址 配置网关 交换机(左)配置:①创建VLAN system-view vlan 10 vlan 20 ②配置PC端接口 interface gi 1/0/1 port link-type access port access vlan 10 interface gi 1/0/2 port link-type access port access vlan 10 interface gi 1…

图像处理(三)

VC实现对不同信号波形相似程度的判别摘要:本文介绍了利用相关对信号波形进行相似程度的判别方法。通过该技术可以对采集到的多种类型的数据信号间的相似度进行判别。本算法由Microsoft Visual C 6.0实现。 一、 引言 在工程上我们经常要判断某设备产生的实际波形信号…