信号和槽简介
信号和槽机制是 QT 的核心机制,应用于对象之间的通信
- 信号和槽是用来在对象间传递数据的方法
- 当一个特定事件发生的时候,
signal会被emit出来,slot调用是用来响应相应的signal的 - Qt中对象已经包含了许多预定义的
signal(基本组件都有各自特有的预定义的信号) - 槽函数绑定了信号,信号一旦发出,就会自动调用绑定的槽函数
信号和槽绑定
通过调用 QObject 对象的 connect 函数来将对象的信号与另外一个对象的槽函数相关联,当发射者发射信号时,接收者的槽函数将被调用
点击按钮,输出hello
from PyQt5.QtWidgets import QApplication, QWidget, QPushButtonimport sys# 槽函数def click():print('hello1')# 1.创建应用程序app = QApplication(sys.argv)# 2.创建窗口w = QWidget()# 修改窗口标题w.setWindowTitle('信号和槽的绑定')"""------------------ 添加按钮 ------------------"""btn = QPushButton()btn.setText('点我')btn.setParent(w)# 绑定按钮点击的信号和处理的槽函数"""------------------ 方式1:槽函数使用函数 ------------------"""# clicked 信号# click定义的槽函数btn.clicked.connect(click)"""------------------ 方式2:槽函数使用lambda表达式 ------------------"""# 信号和槽函数参数必须要保持一致# 如果信号中参数有= 槽函数可以不用添加btn.clicked.connect(lambda: print('hello2'))# 3.显示窗口w.show()# 4.等待窗口停止sys.exit(app.exec())
3. 使用PyQt的槽函数
利用系统自带退出函数QApplication.quit点击按钮,关闭窗口
from PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import QIconimport sys# 1.创建应用程序app = QApplication(sys.argv)# 2.创建窗口w = QWidget()# 修改窗口标题w.setWindowTitle('使用系统的槽函数')"""------------------ 创建按钮 ------------------"""btn = QPushButton()btn.setText('关闭窗口')# 显示按钮btn.setParent(w)"""------------------ 信号和槽绑定 ------------------"""btn.clicked.connect(QApplication.quit) # 使用QApplication的quit方法# 3.显示窗口w.show()# 4.等待窗口停止sys.exit(app.exec())
