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,一经查实,立即删除!

相关文章

Windows 注册和取消注册一个dll或者ocx

原文: Windows 注册和取消注册一个dll或者ocx 一、DLL是什么 DLL,是Dynamic Link Library 的缩写形式,中文名称为动态链接库。 DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法…

栈的相关操作

# include <stdio.h> # include <malloc.h> # include <stdlib.h>typedef struct Node {int data;struct Node * pNext; }NODE, * PNODE;typedef struct Stack {PNODE pTop;PNODE pBottom; }STACK, * PSTACK; //PSTACK 等价于 struct STACK *void init(PSTA…

HttpContext(三)-Request

ASP.NET RequestRequest封装了客户端请求信息&#xff0c;是从客户端得到数据&#xff0c;常用的三种取得数据的方法是&#xff1a;Request.Form、Request.QueryString&#xff0c;Request。其第三种是前两种的一个缩写&#xff0c;可以取代前两种情况。而前两种主要对应的Form…

jenkins学习笔记2-在centos中安装jenkins master测试环境

在centos中安装jenkins1&#xff09;安装目录pwd (/home/AAA)2&#xff09;检查java是否安装[AAACentos_AAA jenkins]$ java -version java version "1.6.0_22"OpenJDK Runtime Environment (IcedTea6 1.10.4) (rhel-1.41.1.10.4.el6-x86_64)OpenJDK 64-Bit Server V…

数据结构与算法6—树

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

动态改变stage桢数

动态改变stage桢数 stage.frameRate speed; 转载于:https://www.cnblogs.com/jiahuafu/archive/2010/03/29/1699434.html

约瑟夫环 java_约瑟夫环Java实现

/*** 约瑟夫问题* 设编号为 1&#xff0c;2&#xff0c;… n 的 n 个人围坐一圈&#xff0c;* 约定编号为 k(1<k<n)的人从 1 开始报数&#xff0c;* 数到 m 的那个人出列&#xff0c;* 它的下一位又从 1 开始报数&#xff0c;数到 m 的那个人又出列&#xff0c;* 依次类推…

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

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

Python——Django框架——Model数据库模型

一、设置 1、Django的setting中配置数据库(MySQL配置) DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: 数据库名称,USER: 数据库用户名,PASSWORD: 数据库密码,HOST: 主机地址,POST: 端口号,} }INSTALLED_APPS [django.contrib.admin,django.contrib.auth,djan…

boot nk.bin by CEPC

build nk.bin \public\common\oak\misc\wince.bat X86 wpc CEPC platform builder 启动 CEPC 1 安装 virtual pc 2007 2 新建 VM 3 设置 capture floppy disk image platform\cepc\src\bootloader\dos\bootdisk\diskimage\cepcboot.144转载于:https://www.cnblogs.co…

java定时执行一次_java Timer(定时调用、实现固定时间执行)

最近需要用到定时调用的功能。可以通过java的Timer类来进行定时调用&#xff0c;下面是有关Timer的一些相关知识。其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:Timer timer newTimer();timer.sc…

忧郁

网络确实是个好东西&#xff0c;她让我们知识丰富起来&#xff0c;让我们沟通更方便&#xff0c;让世界更小了。 博客确实是个好东西&#xff0c;她记录博主的成长。 但是最近经常被博客郁闷到&#xff0c;本来我就是一个忧郁的人&#xff0c;每当我看到有些博客更新了几年最后…

docker基础应用

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

永远的福气

你知不知道每个女人最想要的不是一生的美丽美丽会骗了我和你换不到永远的福气你知不知道每个女人最害怕的就是爱人骗自己以为他说的诺言会保证形影不离我碰见你 也看到我最想过的日子因为有你 更了解自己我相信你 却也相信白头到老不能靠运气你是否可以 爱我一生一世发生什么都…

正则表达式(不断更新,欢迎纠错)

匹配中文字符的正则表达式&#xff1a; [u4e00-u9fa5]评注&#xff1a;匹配中文还真是个头疼的事&#xff0c;有了这个表达式就好办了匹配双字节字符(包括汉字在内)&#xff1a;[^x00-xff]评注&#xff1a;可以用来计算字符串的长度&#xff08;一个双字节字符长度计2&#xff…

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

基本数据类型JAVA中一共有八种基本数据类型&#xff0c;他们分别是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…

Postgresql日志配置

将PostgreSQL数据库安装后&#xff0c;需要进行一些关于数据库日志的配置&#xff0c;将postgresql.conf文件中&#xff0c;关于日志的配置选项详解&#xff0c;记录如下&#xff1a; 1.logging_collector on/off 是否将日志重定向至文件中&#xff0c;默认是off&#xff08;修…

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

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

java 3number_java 数据Number、Math

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

HOG(方向梯度直方图)

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