python-gui-pyqt5的使用方法-5--为类增加信号

为类添加信号–代码还是有些问题,没有打印内容

一.非正确版本,稍后,在对比下内容,下面有可以运行的版本

"""
为类添加信号
"""

from PyQt5.QtCore import *


class MultiSignal(QObject):
    signal1 = pyqtSignal()
    signal2 = pyqtSignal(int)
    signal3 = pyqtSignal(int, str)
    signal4 = pyqtSignal(list)
    signal5 = pyqtSignal(dict)

    # 声明一个重载版本的信号,槽函数可以是(int,str)或者是str
    signal6 = pyqtSignal([int, str], [str])

    def __int__(self):
        super(MultiSignal, self).__init__()
        # 信号与信息绑定
        self.signal1.connect(self.signalcall1)
        self.signal2.connect(self.signalcall2)
        self.signal3.connect(self.signalcall3)
        self.signal4.connect(self.signalcall4)
        self.signal5.connect(self.signalcall5)
        self.signal6[str].connect(self.signalcall6over)
        self.signal6[int,str].connect(self.signalcall6)
        print("connect finish")
        # 触发信号
        self.signal1.emit()
        self.signal2.emit(10)
        self.signal3.emit(99, "hello")
        self.signal4.emit([1, 7, 45, 5])
        self.signal5.emit({
    
    'name': 'tom', 'age': 26})
        self.signal6[int, str].emit(20, "test")
        self.signal6[str].emit(20)
        print("emit")
    # 下面的调用函数,参数 个数 以及 类别 需要与上面的做对应
    def signalcall1(self):
        print("signal1 emit")

    def signalcall2(self, val):
        print("signal2 emit", val)

    def signalcall3(self, val, text):
        print("signal3 emit", val, text)

    def signalcall4(self, val):
        print("signal4 emit", val)

    def signalcall5(self, val):
        print("signal5 emit", val)

    # 重载或者绑定的方法,下面两个都是,第一个是由两个参数的,第二个是有一个参数的:
    def signalcall6(self, var, text):
        print("signal emit", var, text)

    def signalcall6over(self, var):
        print("signal emit", var)


if __name__ == '__main__':
    multisignal = MultiSignal()

二.正确版本:

from PyQt5.QtCore import pyqtSignal,QObject

class MultiSignal(QObject):
    signal1=pyqtSignal()
    signal2=pyqtSignal(int)
    signal3 = pyqtSignal(int, str)
    signal4 = pyqtSignal(list)
    signal5 = pyqtSignal(dict)
    signal6 = pyqtSignal([int, str], [str])


    def __init__(self):
        super(MultiSignal, self).__init__()
        self.signal1.connect(self.signalcall1)
        self.signal2.connect(self.signalcall2)
        self.signal3.connect(self.signalcall3)
        self.signal4.connect(self.signalcall4)
        self.signal5.connect(self.signalcall5)
        self.signal6[str].connect(self.signalcall6over)
        self.signal6[int, str].connect(self.signalcall6)
        self.signal1.emit()
        self.signal2.emit(10)
        self.signal3.emit(99, "hello")
        self.signal4.emit([1, 7, 45, 5])
        self.signal5.emit({
    
    'name': 'tom', 'age': 26})
        self.signal6[int, str].emit(20, "test")
        self.signal6[str].emit("tom")


    def signalcall1(self):
        print("signal1 emit")

    def signalcall2(self,val):
        print("signal2 emit",val)
    def signalcall3(self, val, text):
        print("signal3 emit", val, text)

    def signalcall4(self, val):
        print("signal4 emit", val)

    def signalcall5(self, val):
        print("signal5 emit", val)

    # 重载或者绑定的方法,下面两个都是,第一个是由两个参数的,第二个是有一个参数的:
    def signalcall6(self, var, text):
        print("signal emit", var, text)

    def signalcall6over(self, var):
        print("signal emit", var)



if __name__ == '__main__':
    multisignal=MultiSignal()

猜你喜欢

转载自blog.csdn.net/wtt234/article/details/114023571