项目文件夹

文件
2026-07-13 12:28:27 +08:00

53 行
1.4 KiB
Python

"""UI 工具模块
提供 Toast 浮动消息通知和系统托盘功能。
该模块设计为 Client 和 Server 共用,日志记录器通过注入方式加载。
"""
import logging
from typing import Any
# ============================================================
# Logger 代理机制
# ============================================================
class _LoggerProxy:
"""
日志代理类(利用 __getattr__ 动态转发)
允许先导入 logger 对象,稍后再注入真正的实现。
"""
def __init__(self):
self._target = logging.getLogger('core.ui') # 默认 logger
def set_target(self, logger):
"""注入真正的 logger 实现"""
self._target = logger
def __getattr__(self, name):
"""将所有属性访问转发给真正的 logger"""
return getattr(self._target, name)
# 1. 创建代理实例
logger = _LoggerProxy()
def set_ui_logger(real_logger):
"""设置 UI 模块使用的日志记录器"""
logger.set_target(real_logger)
# ============================================================
# 导出组件
# ============================================================
from .toast import toast, toast_stream, ToastMessage, ToastMessageManager
from .tray import enable_min_to_tray, stop_tray
__all__ = [
'logger',
'set_ui_logger',
'toast',
'toast_stream',
'ToastMessage',
'ToastMessageManager',
'enable_min_to_tray',
'stop_tray',
]