python信号与槽(二)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-6 19:28   190   0

上一篇信号与槽的连接,与信号发射都是手动的,而且信号传递比较单一,这次我们弄一些自动的。

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[int,str].connect(self.signalCall6)
        self.signal6[str].connect(self.signalCall6_overload)
        ##信号的发射
        self.signal1.emit()
        self.signal2.emit(10)
        self.signal3.emit(1,"fo")
        self.signal4.emit([1,2,3,4,5])
        self.signal5.emit({"name":"jia"})
        #当有重载对象的信号时,信号的发射也要按照重载的类型分开发射,并且要标注[]
        self.signal6[int,str].emit(20,"nn")
        self.signal6[str].emit("mm")
    ##槽函数
    def signalCall1(self):
        print("signal1 emit")
    def signalCall2(self,val):
        print("signal2 emit,value:",val)
    def signalCall3(self,val,text):
        print("signal3 emit,value:",val,text)
    def signalCall4(self,val):
        print("signal4 emit,value:",val)
    def signalCall5(self,val):
        print("signal5 emit,value:",val)
    #当有重载对象的信号时,对应的槽函数也应该不同
    def signalCall6(self,val,text):
        print("signal6 emit,value:",val,text)
    def signalCall6_overload(self,val):
        print("signal6_over emit,value:",val)

if __name__ == '__main__':
    custSignal =MultiSignal().__int__()
    #按道理来说,应该是custSignal =MultiSignal(),默认调用初始化,但不行。有知道为何的大佬方便的话可以告知一下仔。

结果:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP