pyqtSignal的简单使用及用法是什么
Admin 2022-11-01 群英技术资讯 797 次浏览
下面包含了对pyqtSignal的基础使用,包括多参数
因为较为简单,就当作参考书吧~~
然后信号可以接收多个信号源哦~下面也有举例 (mousePressEvent 和 buttonClicked2)
import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QMainWindow, QHBoxLayout from PyQt5.QtCore import Qt, pyqtSignal class CMainWindow(QMainWindow): signalTest = pyqtSignal() signalTest1 = pyqtSignal(str) signalTest2 = pyqtSignal(float, float) def __init__(self): super().__init__() # 确认PushButton设置 btn = QPushButton("无参信号") btn.clicked.connect(self.buttonClicked) btn1 = QPushButton("单参信号") btn1.clicked.connect(self.buttonClicked1) btn2 = QPushButton('双参信号') btn2.clicked.connect(self.buttonClicked2) hBox = QHBoxLayout() hBox.addStretch(1) hBox.addWidget(btn) hBox.addWidget(btn1) hBox.addWidget(btn2) widget = QWidget() self.setCentralWidget(widget) widget.setLayout(hBox) self.signalTest.connect(self.signalNone) self.signalTest1.connect(self.signalOne) self.signalTest2.connect(self.signalTwo) self.setWindowTitle('pysignal的使用') self.show() def signalNone(self): print("无参信号,传来的信息") def signalOne(self, arg1): print("单参信号,传来的信息:", arg1) def signalTwo(self, arg1, arg2): print("双参信号,传来的信息:", arg1, arg2) def mousePressEvent(self, event): self.signalTest2.emit(event.pos().x(), event.pos().y()) def buttonClicked(self): self.signalTest.emit() def buttonClicked1(self): self.signalTest1.emit("我是单参信号传来的") def buttonClicked2(self): self.signalTest2.emit(0, 0) def keyPressEvent(self, e): if e.key() == Qt.Key_Escape: self.close() if __name__ == '__main__': app = QApplication(sys.argv) MainWindow = CMainWindow() sys.exit(app.exec_())
from PyQt5.QtCore import QObject , pyqtSignal class CustSignal(QObject): #声明无参数的信号 signal1 = pyqtSignal() #声明带一个int类型参数的信号 signal2 = pyqtSignal(int) #声明带int和str类型参数的信号 signal3 = pyqtSignal(int,str) #声明带一个列表类型参数的信号 signal4 = pyqtSignal(list) #声明带一个字典类型参数的信号 signal5 = pyqtSignal(dict) #声明一个多重载版本的信号,包括带int和str类型参数的信号和带str类型参数的信号 signal6 = pyqtSignal([int,str], [str]) def __init__(self,parent=None): super(CustSignal,self).__init__(parent) #将信号连接到指定槽函数 self.signal1.connect(self.signalCall1) self.signal2.connect(self.signalCall2) self.signal3.connect(self.signalCall3) self.signal4.connect(self.signalCall4) self.signal5.connect(self.signalCall5) self.signal6[int,str].connect(self.signalCall6) self.signal6[str].connect(self.signalCall6OverLoad) #发射信号 self.signal1.emit() self.signal2.emit(1) self.signal3.emit(1,"text") self.signal4.emit([1,2,3,4]) self.signal5.emit({"name":"tao","age":"25"}) self.signal6[int,str].emit(1,"text") self.signal6[str].emit("text") def signalCall1(self): print("signal1 emit") def signalCall2(self,val): print("signal2 emit,value:",val) def signalCall3(self,val,text): print("signal3 emit,value:",val,text) def signalCall4(self,val): print("signal4 emit,value:",val) def signalCall5(self,val): print("signal5 emit,value:",val) def signalCall6(self,val,text): print("signal6 emit,value:",val,text) def signalCall6OverLoad(self,val): print("signal6 overload emit,value:",val) if __name__ == '__main__': custSignal = CustSignal() 运行结果:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要介绍了pyscript的简单应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要给大家分析python实现提取html文本的方法,小编觉得比较实用,对新手学习python有一定的帮助,因此分享给大家做个参考,感兴趣的朋友可以了解看看,接下来我们一起学习一下吧。
众所周知Django较为适合原生开发,即通过该框架搭建一个全新的项目,通过在修改models.py来创建新的数据库表,下面这篇文章主要给大家介绍了关于django连接Mysql中已有数据库的相关资料,需要的朋友可以参考下
可以连接迭代器的函数,包括chain,按顺序将多个迭代器连接成一个迭代器;Cycle,重复迭代器的所有元素;
在这篇文章中我们来了解一下python事件,包括延迟运行事件、重叠事件、事件优先级、取消事件、其他方法。一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008