refactor: 引入 EventBus 事件总线,实现各步骤面板间的去中心化自动参数传导,完成最终解耦

This commit is contained in:
DXC
2026-06-17 16:27:26 +08:00
parent a58744cfbb
commit bb5c2a50f8
5 changed files with 220 additions and 120 deletions

34
src/gui/core/event_bus.py Normal file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
轻量级事件总线
支持 subscribe(event_name, callback) 和 publish(event_name, data),
用于步骤面板间的去中心化参数传导。
"""
from collections import defaultdict
from typing import Any, Callable, Dict, List
class EventBus:
"""发布-订阅事件总线"""
def __init__(self):
self._subscribers: Dict[str, List[Callable]] = defaultdict(list)
def subscribe(self, event_name: str, callback: Callable[[dict], None]):
"""订阅事件。callback 接收一个 dict 作为事件数据。"""
self._subscribers[event_name].append(callback)
def publish(self, event_name: str, data: Dict[str, Any]):
"""发布事件,通知所有订阅者。"""
for callback in self._subscribers.get(event_name, []):
try:
callback(data)
except Exception:
pass
# 全局单例
global_event_bus = EventBus()