1、案例
槽函数:实现打印这句话。
当用户点击按钮时,会产生clicked信号,将该信号与按钮连接。
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("信号与槽")
self.resize(500, 500)
self.Object_信号与槽2()
def Object_信号与槽2(self):
# 当我点击按钮的时候会打印一句话
# self是因为最后要添加到窗口上,所以传入窗口对象
btn = QPushButton(self)
btn.setText("点击我")
def cao():
print("点我干啥!")
# 连接信号与槽
btn.clicked.connect(cao)
2、案例2
连接窗口标题变化的信号与槽:windowTitleChanged.connect()将信号与槽连接。
通过window.setWindowTitle()方法修改标题时,会触发该信号,触发与信号关联的槽。
需要获取最新标题:槽函数中传入标题。
方法一:通过使信号与槽断开连接,在重新连接。
window = QWidget()
# 连接窗口标题变化的信号 与 槽
def cao_function(title):
#print("窗口标题变化了!", title)
window.windowTitleChanged.disconnect()
# 或者临时终止
#window.blockSignals(True)
window.setWindowTitle("新课-" + title)
window.windowTitleChanged.connect(cao_function)
window.windowTitleChanged.connect(cao_function)
window.setWindowTitle("Hello Sz")
window.show()
sys.exit(app.exec_())
方法二:直接使用暂停
window.blockSignals(True)
方法一:调用window.setWindowTitle()方法,会发出信号,修改标题,信号与槽连接,再将信号与槽断开,修改标题为新标题,因为信号与槽断开连接,所以使用该方法并不会在调用槽函数。