信号与槽有三种使用方法,第一种是内置信号与槽的使用,第二种是自定义的信号与槽的使用,第三种是装饰器的信号与槽的使用。
内置信号与槽
from PyQt5.QtWidgets import QPushButton , QApplication, QWidget
from PyQt5.QtWidgets import QMessageBox
import sys
app = QApplication(sys.argv)
widget = QWidget()
def showMsg():
QMessageBox.information(widget, "信息提示框", "ok,弹出测试信息")
btn = QPushButton( "测试点击按钮", widget)
btn.clicked.connect(showMsg)
widget.show()
sys.exit(app.exec_())
自定义信号与槽
from PyQt5.QtCore import QObject , pyqtSignal
#信号对象
class QTypeSignal(QObject):
sendmsg = pyqtSignal( str,str,object) #定义一个信号
def __init__( self):
super().__init__()
def run( self):# 发射信号
list1 = [1,2,3,4,5]
self.sendmsg.emit('第一个参数','第二个参数',list1)
# 槽对象
class QTypeSlot(QObject):
def __init__( self):
super().__init__()
# 槽对象里的槽函数
def get(self, msg1, msg2,list2):
print("QSlot get msg => " + msg1 + ' ' + msg2)
print(list2)
if __name__ == '__main__':
send = QTypeSignal()
slot = QTypeSlot()
#1
print('--- 把信号绑定到槽函数 ---')
send.sendmsg.connect(slot.get)
send.run()
#2
print('--- 把信号断开槽函数 ---')
send.sendmsg.disconnect(slot.get )
send.run()