当前位置: 首页 PyQt5中事件处理机制及信号和槽之间的通信交互 自定义信号实现多种参数传递
add-vip

自定义信号实现多种参数传递

一、学习指导

信号的定义使用的是pyqtSignal()方法,此方法也可以放入一些参数丰富自定义信号的功能,这节课我们就来看看自定义信号是如何传递不同类型的参数。我们还是用上一节课自定义的信号,这里要注意参数的书写格式和从上到下传递过程中要保持一致性。

二、代码演示


from PyQt5.Qt import *
import sys


class Btn(QPushButton):
    rightSignal = pyqtSignal([str], [str, int])

    def mousePressEvent(self, evt):
        super().mousePressEvent(evt)
        if evt.button() == Qt.RightButton:
            self.rightSignal[str, int].emit(self.text(), 555)


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("自定义信号实现多种参数传递")
        self.resize(600, 500)
        self.func_list()

    def func_list(self):
        self.func()

    def func(self):
        btn = Btn(self)
        btn.setText('按钮')
        btn.move(200, 100)

        def btn_press(str, a):
            print('鼠标被按下' + '====' + str)
            print(a)
        btn.rightSignal[str, int].connect(btn_press)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())


相关文章