上QQ阅读APP看书,第一时间看更新
1.4.4 多个信号连接一个槽
QPushButton除了有clicked信号,还有pressed信号和released信号。pressed信号是在按钮被“按下”那一刻发射,而released信号则是在按钮被“松开”后发射。“按下”和“松开”其实就构成了一次单击,也就会发射clicked信号。现在我们将pressed信号和released信号用在示例代码1-17中。
示例代码1-17
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.change_text) #注释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-27所示。
图1-27 “按下”和“松开”后的按钮文本
代码解释:
#1 将pressed信号和released信号都跟change_text()槽函数连接起来。那么当按钮被“按下”(不“松开”)时,槽函数就会被调用,按钮文本从“Start”变成了“Stop”。当“松开”按钮后,槽函数再次被调用,按钮文本从“Stop”变回了“Start”。