PyQt编程快速上手
上QQ阅读APP看书,第一时间看更新

1.4.5 信号与信号连接

信号不仅可以跟槽函数连接,还可以跟信号连接,详见示例代码1-18。

示例代码1-18

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

代码解释:

#1 我们将pressed信号同released信号进行连接,而released信号则跟槽函数进行连接。当按钮被“按下”(不“松开”)后,pressed信号发射,released信号也会马上跟着发射,槽函数就会被执行,改变按钮的文本。当按钮被“松开”后,released信号再次发射,槽函数再次被调用。运行结果跟图1-26所示的一样。