当前位置:   article > 正文

pyqt5 信号槽_python使用qthread时,signal = pyqtsignal()可以是list类型吗

python使用qthread时,signal = pyqtsignal()可以是list类型吗

目录

多线程进度条示例

worker例子:


pyqtSignal 的数据类型可以 int str,list

getimageSignal = pyqtSignal(QImage, list)

previewSignal = pyqtSignal([int,str],[str])

多线程进度条示例

  1. #!/usr/bin/python
  2. # coding:UTF-8
  3. from PyQt5 import QtWidgets, QtCore
  4. import sys
  5. from PyQt5.QtCore import *
  6. import time
  7. # 继承QThread
  8. class Runthread(QtCore.QThread):
  9. # 通过类成员对象定义信号对象
  10. _signal = pyqtSignal(str)
  11. def __init__(self):
  12. super(Runthread, self).__init__()
  13. def __del__(self):
  14. self.wait()
  15. def run(self):
  16. for i in range(100):
  17. time.sleep(0.1)
  18. self._signal.emit(str(i)) # 注意这里与_signal = pyqtSignal(str)中的类型相同
  19. class Example(QtWidgets.QWidget):
  20. def __init__(self):
  21. super(Example, self).__init__()
  22. # 按钮初始化
  23. self.button = QtWidgets.QPushButton('开始', self)
  24. self.button.move(120, 80)
  25. self.button.clicked.connect(self.start_login) # 绑定多线程触发事件
  26. # 进度条设置
  27. self.pbar = QtWidgets.QProgressBar(self)
  28. self.pbar.setGeometry(50, 50, 210, 25)
  29. self.pbar.setValue(0)
  30. # 窗口初始化
  31. self.setGeometry(300, 300, 300, 200)
  32. self.show()
  33. self.thread = None # 初始化线程
  34. def start_login(self):
  35. # 创建线程
  36. self.thread = Runthread()
  37. # 连接信号
  38. self.thread._signal.connect(self.call_backlog) # 进程连接回传到GUI的事件
  39. # 开始线程
  40. self.thread.start()
  41. def call_backlog(self, msg):
  42. self.pbar.setValue(int(msg)) # 将线程的参数传入进度条
  43. if __name__ == "__main__":
  44. app = QtWidgets.QApplication(sys.argv)
  45. myshow = Example()
  46. myshow.show()
  47. sys.exit(app.exec_())

worker例子:

PyQt - 使用多线程避免界面卡顿_pyqt 多线程-CSDN博客

还有一多,多对一的高级玩法,可以参考:

https://blog.csdn.net/broadview2006/article/details/80132757

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/838884
推荐阅读
相关标签
  

闽ICP备14008679号