【6】PyQt信号和槽
1. 信号和槽简介
信号和槽机制是 QT 的核心机制,应用于对象之间的通信
- 信号和槽是用来在对象间传递数据的方法
- 当一个特定事件发生的时候,
signal
会被emit
出来,slot
调用是用来响应相应的signal
的 - Qt中对象已经包含了许多预定义的
signal
(基本组件都有各自特有的预定义的信号) - 槽函数绑定了信号,信号一旦发出,就会自动调用绑定的槽函数
2. 信号和槽绑定
通过调用 QObject 对象的 connect 函数来将对象的信号与另外一个对象的槽函数相关联,当发射者发射信号时,接收者的槽函数将被调用
点击按钮,输出hello
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
import 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())
运行程序:
使用PyQt的槽函数
利用系统自带退出函数QApplication.quit
点击按钮,关闭窗口
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import 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())