文章目录

  • 1、简介
  • 2、功能实现


1、简介

自定义的信号 ,传递不同的参数

2、功能实现
# -*- coding: utf-8 -*-

"""
    【简介】
    内置信号槽信号槽示例


"""

from PyQt5.QtCore import QObject , pyqtSignal

class CustSignal(QObject):
      
    # 声明一个无参数的信号
    signal1 = pyqtSignal()
      
    # 声明带一个int类型参数的信号
    signal2 = pyqtSignal(int)
      
    # 声明带一个int和str类型参数的信号
    signal3 = pyqtSignal(int,str)
  
    # 声明带一个列表类型参数的信号
    signal4 = pyqtSignal(list)
  
    # 声明带一个字典类型参数的信号
    signal5 = pyqtSignal(dict)
  
    # 声明一个多重载版本的信号,包括了一个带int和str类型参数的信号或着带str参数的信号
    signal6 = pyqtSignal([int,str], [str])
      
    def __init__(self,parent=None):
        super(CustSignal,self).__init__(parent)
  
        # 信号连接到指定槽
        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)   # 重载传递不同参数 ,int  str
        self.signal6[str].connect(self.signalCall6OverLoad) # str
  
        # 信号发射
        self.signal1.emit()
        self.signal2.emit(1)
        self.signal3.emit(1,"text")
        self.signal4.emit([1,2,3,4])
        self.signal5.emit({"name":"wangwu","age":"25"})
        self.signal6[int,str].emit(1,"text")
        self.signal6[str].emit("text")
          
    def signalCall1(self):   # 无参函数
        print("signal1 emit")
  
    def signalCall2(self,val):  # int  型参数
        print("signal2 emit,value:",val)
  
    def signalCall3(self,val,text): # int  str  参数
        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): # 重载的 int str
        print("signal6 emit,value:",val,text)
  
    def signalCall6OverLoad(self,val): # 重载的 str
        print("signal6 overload emit,value:",val)
  
if __name__ == '__main__':  
    custSignal = CustSignal()

PyQt5   自定义信号槽 不同传参_信号槽

文件参考:
PyQt 快速开发与实践

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除