123456789101112131415161718192021222324252627282930313233 |
- from PyQt6.QtCore import QObject,pyqtSlot,QRunnable
- import sys
- import traceback
- from PyQt6 import QtCore
- class WorkerSignals(QObject):
- finished = QtCore.pyqtSignal()
- error = QtCore.pyqtSignal(tuple)
- result = QtCore.pyqtSignal(object)
- class Worker2(QRunnable):
- def __init__(self, fn, *args, **kwargs):
- super(Worker2, self).__init__()
- # Store constructor arguments (re-used for processing)
- self.fn = fn
- self.args = args
- self.kwargs = kwargs
- self.signals = WorkerSignals()
- @pyqtSlot()
- def run(self):
- try:
- result = self.fn(*self.args, **self.kwargs)
- except Exception:
- traceback.print_exc()
- exctype, value = sys.exc_info()[:2]
- self.signals.error.emit((exctype, value, traceback.format_exc()))
- else:
- self.signals.result.emit(result) # Return the result of the processing
- finally:
- self.signals.finished.emit()
|