1.4.3 一个信号连接多个槽

一个信号可以连接多个槽函数,也就是信号只用发射一次,就可以调用多个槽函数。示例代码1-16是在示例代码1-13的基础上修改得到的,该示例代码将按钮的clicked信号与两个槽函数进行了连接。

示例代码1-16

import sys
from PyQt5.QtWidgets import *
 
class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.btn = QPushButton('Start', self)
        self.btn.clicked.connect(self.change_text)  #注释1开始
        self.btn.clicked.connect(self.change_size)  #注释1结束
 
    def change_text(self):
        if self.btn.text() == 'Start':
            self.btn.setText('Stop')
        else:
            self.btn.setText('Start')
 
    def change_size(self):    # 2
        self.btn.resize(150, 30)
 
if __name__ == '__main__':
    app = QApplication([])
    window = Window()
    window.show()
    sys.exit(app.exec())

运行结果如图1-26所示。

图1-26 一个信号连接两个槽函数

代码解释:

#1 clicked信号连接了change_text()槽函数和change_size()槽函数。

#2 change_size()槽函数用于改变按钮的尺寸。