加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

pyqtSignal的简单运用及用法是什么

发布时间:2023-09-14 12:49:00 所属栏目:语言 来源:
导读:关于“pyqtSignal的简单使用及用法是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继

关于“pyqtSignal的简单使用及用法是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。

pyqtSignal的基本使用

下面包含了对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_())

关于pyqtSignal()作用

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()

这篇关于“pyqtSignal的简单使用及用法是什么”的文章就介绍到这了,更多相关的内容,欢迎关注,小编将为大家输出更多高质量的实用文章!

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章