from PyQt6.QtCore import QThread, pyqtSignal class PageDataWorker(QThread): data_ready = pyqtSignal(str, object) failed = pyqtSignal(str, str) def __init__(self, name, fn, *args): super().__init__() self.name = name self.fn = fn self.args = args def run(self): try: payload = self.fn(*self.args) self.data_ready.emit(self.name, payload) except Exception as error: self.failed.emit(self.name, f"{type(error).__name__}: {error}")