信号和槽简介

信号和槽机制是 QT 的核心机制,应用于对象之间的通信

  • 信号和槽是用来在对象间传递数据的方法
  • 当一个特定事件发生的时候,signal会被emit出来,slot调用是用来响应相应的signal
  • Qt中对象已经包含了许多预定义的 signal(基本组件都有各自特有的预定义的信号)
  • 槽函数绑定了信号,信号一旦发出,就会自动调用绑定的槽函数

    信号和槽绑定

    通过调用 QObject 对象的 connect 函数来将对象的信号与另外一个对象的槽函数相关联,当发射者发射信号时,接收者的槽函数将被调用

点击按钮,输出hello

  1. from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
  2. import sys
  3. # 槽函数
  4. def click():
  5. print('hello1')
  6. # 1.创建应用程序
  7. app = QApplication(sys.argv)
  8. # 2.创建窗口
  9. w = QWidget()
  10. # 修改窗口标题
  11. w.setWindowTitle('信号和槽的绑定')
  12. """------------------ 添加按钮 ------------------"""
  13. btn = QPushButton()
  14. btn.setText('点我')
  15. btn.setParent(w)
  16. # 绑定按钮点击的信号和处理的槽函数
  17. """------------------ 方式1:槽函数使用函数 ------------------"""
  18. # clicked 信号
  19. # click定义的槽函数
  20. btn.clicked.connect(click)
  21. """------------------ 方式2:槽函数使用lambda表达式 ------------------"""
  22. # 信号和槽函数参数必须要保持一致
  23. # 如果信号中参数有= 槽函数可以不用添加
  24. btn.clicked.connect(lambda: print('hello2'))
  25. # 3.显示窗口
  26. w.show()
  27. # 4.等待窗口停止
  28. sys.exit(app.exec())

运行程序:
image.png

3. 使用PyQt的槽函数

利用系统自带退出函数QApplication.quit点击按钮,关闭窗口

  1. from PyQt5.QtWidgets import *
  2. from PyQt5.QtCore import *
  3. from PyQt5.QtGui import QIcon
  4. import sys
  5. # 1.创建应用程序
  6. app = QApplication(sys.argv)
  7. # 2.创建窗口
  8. w = QWidget()
  9. # 修改窗口标题
  10. w.setWindowTitle('使用系统的槽函数')
  11. """------------------ 创建按钮 ------------------"""
  12. btn = QPushButton()
  13. btn.setText('关闭窗口')
  14. # 显示按钮
  15. btn.setParent(w)
  16. """------------------ 信号和槽绑定 ------------------"""
  17. btn.clicked.connect(QApplication.quit) # 使用QApplication的quit方法
  18. # 3.显示窗口
  19. w.show()
  20. # 4.等待窗口停止
  21. sys.exit(app.exec())