Pyqt 自定义信号数据类型

阳光穿透心脏的1/2处 2023-06-17 13:55 83阅读 0赞
  1. # -*- coding: utf-8 -*-
  2. """
  3. 【简介】
  4. 内置信号槽信号槽示例
  5. """
  6. from PyQt5.QtCore import QObject , pyqtSignal
  7. class CustSignal(QObject):
  8. # 声明一个无参数的信号
  9. signal1 = pyqtSignal()
  10. # 声明带一个int类型参数的信号
  11. signal2 = pyqtSignal(int)
  12. # 声明带一个int和str类型参数的信号
  13. signal3 = pyqtSignal(int,str)
  14. # 声明带一个列表类型参数的信号
  15. signal4 = pyqtSignal(list)
  16. # 声明带一个字典类型参数的信号
  17. signal5 = pyqtSignal(dict)
  18. # 声明一个多重载版本的信号,包括了一个带int和str类型参数的信号或着带str参数的信号
  19. signal6 = pyqtSignal([int,str], [str])
  20. def __init__(self,parent=None):
  21. super(CustSignal,self).__init__(parent)
  22. # 信号连接到指定槽
  23. self.signal1.connect(self.signalCall1)
  24. self.signal2.connect(self.signalCall2)
  25. self.signal3.connect(self.signalCall3)
  26. self.signal4.connect(self.signalCall4)
  27. self.signal5.connect(self.signalCall5)
  28. self.signal6[int,str].connect(self.signalCall6)
  29. self.signal6[str].connect(self.signalCall6OverLoad)
  30. # 信号发射
  31. self.signal1.emit()
  32. self.signal2.emit(1)
  33. self.signal3.emit(1,"text")
  34. self.signal4.emit([1,2,3,4])
  35. self.signal5.emit({"name":"wangwu","age":"25"})
  36. self.signal6[int,str].emit(1,"text")
  37. self.signal6[str].emit("text")
  38. def signalCall1(self):
  39. print("signal1 emit")
  40. def signalCall2(self,val):
  41. print("signal2 emit,value:",val)
  42. def signalCall3(self,val,text):
  43. print("signal3 emit,value:",val,text)
  44. def signalCall4(self,val):
  45. print("signal4 emit,value:",val)
  46. def signalCall5(self,val):
  47. print("signal5 emit,value:",val)
  48. def signalCall6(self,val,text):
  49. print("signal6 emit,value:",val,text)
  50. def signalCall6OverLoad(self,val):
  51. print("signal6 overload emit,value:",val)
  52. if __name__ == '__main__':
  53. custSignal = CustSignal()

转载:《PyQt5 快速开发与实践》

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读