上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所示的一样。