feat: 实现基于PySide6的翻译GUI工具初始版本

添加主程序入口、GUI界面、翻译核心逻辑、Word文件处理、系统监控和日志模块
This commit is contained in:
2026-01-14 15:10:19 +08:00
commit 136994db90
9 changed files with 762 additions and 0 deletions

27
utils/logger.py Normal file
View File

@@ -0,0 +1,27 @@
from loguru import logger
import os
import sys
# 创建logs目录
logs_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs')
os.makedirs(logs_dir, exist_ok=True)
# 配置日志
logger.remove()
logger.add(
sys.stdout,
level="INFO",
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",
colorize=True
)
logger.add(
os.path.join(logs_dir, "translate.log"),
level="DEBUG",
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {module}.{function}:{line} | {message}",
rotation="10 MB",
retention="7 days",
compression="zip"
)
# 导出logger实例
__all__ = ["logger"]

57
utils/system_monitor.py Normal file
View File

@@ -0,0 +1,57 @@
import psutil
from .logger import logger
# 尝试导入GPUtil如果失败则设置has_gpu为False
try:
import GPUtil
GPUtil_available = True
except ImportError:
logger.warning("GPUtil模块未找到将禁用GPU监控")
GPUtil_available = False
class SystemMonitor:
def __init__(self):
self.cpu_usage = 0.0
self.memory_usage = 0.0
self.gpu_memory_usage = 0.0
self.has_gpu = self._check_gpu()
def _check_gpu(self):
"""检查是否有可用的GPU"""
if not GPUtil_available:
return False
try:
gpus = GPUtil.getGPUs()
return len(gpus) > 0
except Exception as e:
logger.warning(f"GPU检查失败: {e}")
return False
def update_metrics(self):
"""更新系统资源使用情况"""
try:
# 更新CPU使用率
self.cpu_usage = psutil.cpu_percent(interval=0.1)
# 更新内存使用率
memory = psutil.virtual_memory()
self.memory_usage = memory.percent
# 更新GPU内存使用率如果有GPU
if self.has_gpu:
try:
gpus = GPUtil.getGPUs()
if gpus:
self.gpu_memory_usage = gpus[0].memoryUtil * 100
except Exception as e:
logger.warning(f"GPU内存使用率获取失败: {e}")
except Exception as e:
logger.error(f"系统资源监控更新失败: {e}")
def get_status_text(self):
"""获取状态栏显示文本"""
self.update_metrics()
status = f"CPU: {self.cpu_usage:.1f}% | 内存: {self.memory_usage:.1f}%"
if self.has_gpu:
status += f" | GPU内存: {self.gpu_memory_usage:.1f}%"
return status

39
utils/word_handler.py Normal file
View File

@@ -0,0 +1,39 @@
from docx import Document
from .logger import logger
class WordHandler:
@staticmethod
def import_docx(file_path):
"""从docx文件中提取文本内容"""
try:
doc = Document(file_path)
text = []
for paragraph in doc.paragraphs:
if paragraph.text.strip():
text.append(paragraph.text)
logger.info(f"成功从 {file_path} 导入文本,共 {len(text)}")
return "\n\n".join(text)
except Exception as e:
logger.error(f"导入Word文件失败: {e}")
raise
@staticmethod
def export_docx(file_path, content):
"""将文本内容导出为docx文件"""
try:
doc = Document()
# 将内容按段落分割并添加到文档
paragraphs = content.split("\n\n")
for para_text in paragraphs:
if para_text.strip():
doc.add_paragraph(para_text.strip())
doc.save(file_path)
logger.info(f"成功将文本导出到 {file_path},共 {len(paragraphs)}")
return True
except Exception as e:
logger.error(f"导出Word文件失败: {e}")
raise