PyQt5信号与槽(二)信号与槽函数

PyQt5信号与槽(二)信号与槽函数情况

    • 二、PyQt5信号与槽(二)信号与槽函数
      • 1、内置信号和内置槽函数
      • 2、内置信号和自定义槽函数
      • 3、自定义信号和内置槽函数
      • 4、自定义信号和自定义槽函数

二、PyQt5信号与槽(二)信号与槽函数

1、内置信号和内置槽函数

  • 本例演示内置信号和内置槽函数
# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/11 0011 11:38
    # @Author:晚秋拾叶
    # @File:qt07_buildInSignalSlot01.py
    # @PyCharm之Python
"""
from PyQt5.QtWidgets import *
import sys


class WinForm(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('内置的信号和内置的槽函数')
        self.resize(300, 50)
        btn = QPushButton('关闭', self)
        btn.clicked.connect(self.close)
        # 发送者btn——>信号clicked——>连接connect——>接收者self——>内置槽函数close


if __name__ == '__main__':
    app = QApplication(sys.argv)
    wind = WinForm()
    wind.show()
    sys.exit(app.exec_())

PyQt5信号与槽(二)信号与槽函数_第1张图片

  • 在上面代码中,单击按键时触发按键内置的信号(clicked),绑定窗口(QWidget)内置的槽函数(self.close)。

2、内置信号和自定义槽函数

  • 本例完整代码
# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/11 0011 11:50
    # @Author:晚秋拾叶
    # @File:qt07_buildInSignalSlot02.py
    # @PyCharm之Python
"""
from PyQt5.QtWidgets import *
import sys


class WinForm(QWidget):
    def __init__(self, parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle("内置信号与自定义槽函数示例")
        self.resize(330, 50)
        btn = QPushButton("关闭", self)
        btn.clicked.connect(self.btn_close)

    def btn_close(self):
        # 这里就是自定义槽函数,再调用内置槽函数close
        self.close()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = WinForm()
    win.show()
    sys.exit(app.exec_())

3、自定义信号和内置槽函数

  • 本例还是那个关闭按键,代码如下
# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/11 0011 12:02
    # @Author:晚秋拾叶
    # @File:qt07_buildInSignalSlot03.py
    # @PyCharm之Python
"""
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSignal
import sys


class Winform(QWidget):
    # 自定义信号
    button_clicked_signal = pyqtSignal()

    def __init__(self, parent=None):
        super(Winform, self).__init__(parent)
        self.setWindowTitle("自定义信号与内置槽函数示例")
        self.resize(330, 50)
        btn = QPushButton("关闭", self)
        # 连接自定义的信号函数
        btn.clicked.connect(self.btn_clicked)
        # 接收信号,连接到内置槽函数
        self.button_clicked_signal.connect(self.close)

    # 自定义的信号函数(也是内置信号clicked的槽函数)
    def btn_clicked(self):
        # 发送自定义信号
        self.button_clicked_signal.emit()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Winform()
    win.show()
    sys.exit(app.exec_())


  • 上面代码中,单击按键时触发自定义信号(button_clicked_signal),绑定内置的槽函数(self.close)。

4、自定义信号和自定义槽函数

  • 还是那个关闭按键
# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/11 0011 12:20
    # @Author:晚秋拾叶
    # @File:qt07_buildInSignalSlot04.py
    # @PyCharm之Python
"""
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSignal
import sys


class WinForm(QWidget):
    # 自定义信号
    button_clicked_signal = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.setWindowTitle("自定义信号与槽函数示例")
        self.resize(330, 50)
        btn = QPushButton("关闭", self)
        # 连接自定义信号函数
        btn.clicked.connect(self.btn_clicked)
        # 接收信号,连接到自定义的槽函数
        self.button_clicked_signal.connect(self.btn_close)

    # 自定义的信号函数(作为自定义信号clicked的槽函数)
    def btn_clicked(self):
        # 发送自定义信号
        self.button_clicked_signal.emit()
    # 自定义的槽函数(调用内置槽函数)
    def btn_close(self):
        self.close()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = WinForm()
    win.show()
    sys.exit(app.exec_())

  • 画个图,这个图和代码的注释不一样了,不改了,以代码注释为准,原书作者的注释有点不清晰
    PyQt5信号与槽(二)信号与槽函数_第2张图片

  • 个人总结

    • 反复看代码,其实不管自定义的信号,还是自定义的槽函数,最后绕来绕去,都要通过内置信号和内置槽函数完成最后的任务。

你可能感兴趣的:(PyQt5信号与槽函数,qt,python,开发语言,pyqt,pycharm)