一、信号与信号槽特点
PyQt的窗口控件类中有很多内置信号,开发者也可以添加自定义信号。信号与槽具有如下特点。
- 一个信号可以连接多个槽。
- 一个信号可以连接另一个信号。
- 信号参数可以是任何Python类型。
- 一个槽可以监听多个信号。
- 信号与槽的连接方式可以是同步连接,也可以是异步连接。
- 信号与槽的连接可能会跨线程。
- 信号可能会断开。
二、信号与槽机制
信号与槽机制示意图如下所示:
三、信号与槽函数关联
信号与槽函数关联使用 **connect()**函数,语句如下:
sender.signalName.connect(receiver.slotName)
举例如下:self.btnOK.clicked.connect(Dialog.accept)
其中:
• sender 表示发射信号的对象名称,如 self.btnOK;
• signalName 表示信号的名称,如 clicked;
• receiver 是对信号作出响应的接收者的名称,如 Dialog;
• slotName 是接收者的响应槽函数的名称,如 accept。
举例如下:
self.pushButton.clicked.connect(self.display)
#信号的发送者self.pushButton发送信号clicked给信号的接收者self,触发信号的接收者执行槽函数display
四、一个信号连接多个信号槽
1、多个槽函数处于不同的接收者,如:textEdit、textBrowser
2、多个槽函数处于相同的接收者,如:textBrowser,槽函数调用的先后顺序即脚本中的前后顺序。