# -*- coding: utf-8 -*- """ PyQt5 全局信号定义 ───────────────────────────────────────────────────────────────── 使用 QObject + pyqtSignal 定义所有 IO 信号, 支持跨线程安全分发(Qt 自动处理线程间信号队列) ───────────────────────────────────────────────────────────────── """ from PyQt5.QtCore import QObject, pyqtSignal class IOSignals(QObject): """ 统一 IO 信号集合(单例) 所有输入/输出/处理器通过此信号对象通信 信号说明: input_received —— 原始输入到达 input_processed —— 输入处理完成,携带处理结果 output_ready —— 输出就绪,通知输出模块渲染 error_occurred —— 任意环节发生错误 status_changed —— IO 状态变更(pending/processing/done) progress_updated —— 长任务进度更新(0~100) """ # ── 输入信号 ────────────────────────────────────────────────── # (data_id: str, io_type: str, raw_data: object) input_received = pyqtSignal(str, str, object) # ── 处理信号 ────────────────────────────────────────────────── # (data_id: str, io_type: str, result: object) input_processed = pyqtSignal(str, str, object) # ── 输出信号 ────────────────────────────────────────────────── # (data_id: str, io_type: str, output_data: object) output_ready = pyqtSignal(str, str, object) # ── 错误信号 ────────────────────────────────────────────────── # (data_id: str, source: str, error_msg: str) error_occurred = pyqtSignal(str, str, str) # ── 状态信号 ────────────────────────────────────────────────── # (data_id: str, status: str) status_changed = pyqtSignal(str, str) # ── 进度信号 ────────────────────────────────────────────────── # (data_id: str, progress: int) progress_updated = pyqtSignal(str, int) # ── 语音专用 ────────────────────────────────────────────────── # (text: str) speech_recognized = pyqtSignal(str) # (text: str) tts_finished = pyqtSignal(str) # ─── 单例 ──────────────────────────────────────────────────── _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance # 全局信号总线实例(全模块共享) io_signals = IOSignals()