前言
有关信号与槽的简介可以看上篇文章。
具体代码
这里主要是讲一下自定义信号的创建与发送。
import sys
from PyQt5 import QtWidgets, QtCore #需要导入QtCore
from demo import Ui_Form
class mainwindow(QtWidgets.QWidget, Ui_Form):
signal_1 = QtCore.pyqtSignal(str) #定义一个信号,括号内的是传递参数的类型,可以有很多类型
def __init__(self):
super(mainwindow, self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.send) #绑定按钮事件
self.signal_1.connect(self.mysignal) #信号绑定到函数mysignal
def send(self):
print("123")
self.tb.setText("")
self.tb.append("------------")
self.signal_1.emit("11111111111") #按钮点击后,send函数通过emit发送信号
def mysignal(self, string):
print(string)
self.tb.append("----ok------")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = mainwindow()
window.show()
sys.exit(app.exec_())
运行结果如下图
注意
当信号与槽函数的参数数量相同时,它们参数类型要完全一致。当信号的参数与槽函数的参数数量不同时,只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略。此外,在不进行参数传递时,信号槽绑定时也是要求信号的参数数量大于等于槽函数的参数数量。这种情况一般是一个带参数的信号去绑定一个无参数的槽函数。 传递的参数类型有很多种:str、int、list、object、float、tuple、dict等等