From f88001fa5c56cc935f134b4621e747a5349e50aa Mon Sep 17 00:00:00 2001 From: Horse861 <929110464@qq.com> Date: Thu, 25 Sep 2025 11:17:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=9B=AE=E6=A0=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants.py | 7 +++++ src/file_parser.py | 34 ++++++++++++++++++++++ src/main.py | 12 ++++++++ src/main_window.py | 70 +++++++++++++++++++++++++++++++++++++++++++++ src/typing_logic.py | 54 ++++++++++++++++++++++++++++++++++ 5 files changed, 177 insertions(+) create mode 100644 src/constants.py diff --git a/src/constants.py b/src/constants.py new file mode 100644 index 0000000..e0bdc52 --- /dev/null +++ b/src/constants.py @@ -0,0 +1,7 @@ +""" +需要定义的常量: +SUPPORTED_FORMATS = ['.txt', '.docx'] +DEFAULT_WINDOW_SIZE = (800, 600) +COLOR_CORRECT = QColor('green') +COLOR_WRONG = QColor('red') +""" \ No newline at end of file diff --git a/src/file_parser.py b/src/file_parser.py index e69de29..3bd3cc7 100644 --- a/src/file_parser.py +++ b/src/file_parser.py @@ -0,0 +1,34 @@ +""" +1. parse_file(file_path) +输入:file_path:字符串,文件路径 +输出:字符串(文件内容)或抛出异常 +功能:主解析函数,根据文件扩展名路由到具体解析器 +需要包含: +调用validate_file_path(file_path)验证路径 +根据扩展名调用对应解析函数 +统一异常处理 +2. parse_txt(file_path) +输入:file_path:字符串,txt文件路径 +输出:字符串(文件内容) +功能:解析纯文本文件 +需要包含: +自动检测编码(utf-8, gbk等) +处理不同换行符 +返回纯文本内容 +3. parse_docx(file_path) +输入:file_path:字符串,docx文件路径 +输出:字符串(文档文本内容) +功能:解析Word文档 +需要包含: +提取所有段落文本 +保留基本格式(换行) +忽略图片、表格等非文本元素 +4. validate_file_path(file_path) +输入:file_path:字符串,文件路径 +输出:布尔值(是否有效) +功能:验证文件路径的有效性 +需要包含: +检查文件是否存在 +检查文件是否可读 +检查文件大小是否合理 +""" \ No newline at end of file diff --git a/src/main.py b/src/main.py index e69de29..88bad02 100644 --- a/src/main.py +++ b/src/main.py @@ -0,0 +1,12 @@ +""" +1. main() +输入:无(命令行参数通过sys.argv获取) +输出:整数(程序退出码) +功能:应用程序主入口点 +需要包含: +创建QApplication实例 +创建MainWindow实例 +显示窗口 +启动事件循环 +返回退出码 +""" \ No newline at end of file diff --git a/src/main_window.py b/src/main_window.py index e69de29..4ec4913 100644 --- a/src/main_window.py +++ b/src/main_window.py @@ -0,0 +1,70 @@ +""" +1. __init__(self) +输入:无 +输出:无(构造函数) +功能:初始化主窗口,设置基本属性,调用UI初始化方法 +需要包含: +窗口标题设置为"隐私学习软件 - 仿Word" +窗口大小设置为800x600 +初始化学习内容存储变量self.learning_content = "" +初始化当前输入位置self.current_index = 0 +调用self.initUI() +2. initUI(self) +输入:无 +输出:无 +功能:创建和布局所有UI组件 +需要包含: +创建中央文本编辑区域QTextEdit +调用self.createMenuBar()创建菜单 +创建状态栏并显示"就绪" +连接文本变化信号到self.onTextChanged +3. createMenuBar(self) +输入:无 +输出:无 +功能:创建菜单栏和所有菜单项 +需要包含: +文件菜单:打开(Ctrl+O)、保存(Ctrl+S)、退出(Ctrl+Q) +帮助菜单:关于 +为每个菜单项连接对应的槽函数 +4. openFile(self) +输入:无(通过文件对话框获取路径) +输出:无 +功能:打开文件选择对话框并加载选中的文件 +需要包含: +显示文件选择对话框,过滤条件:*.txt, *.docx +如果用户选择了文件,调用FileParser.parse_file(file_path) +成功时:将内容显示在文本区域,重置打字状态 +失败时:显示错误消息框 +5. saveFile(self) +输入:无(通过文件对话框获取路径) +输出:布尔值(成功/失败) +功能:保存当前内容到文件 +需要包含: +显示保存文件对话框 +将文本区域内容写入选定文件 +返回操作结果 +6. showAbout(self) +输入:无 +输出:无 +功能:显示关于对话框 +需要包含: +显示消息框,包含软件名称、版本、描述 +7. onTextChanged(self) +输入:无(通过信号自动触发) +输出:无 +功能:处理文本变化事件,实现打字逻辑 +需要包含: +获取当前文本内容 +调用打字逻辑检查输入正确性 +更新高亮显示和状态栏 +8. highlightText(self, position, color) +输入: +position:整数,要高亮到的字符位置 +color:QColor对象,高亮颜色 +输出:无 +功能:高亮显示从开始到指定位置的文本 +需要包含: +使用QTextCursor选择文本范围 +应用背景颜色格式 +恢复光标位置 +""" diff --git a/src/typing_logic.py b/src/typing_logic.py index e69de29..c2e1fee 100644 --- a/src/typing_logic.py +++ b/src/typing_logic.py @@ -0,0 +1,54 @@ +""" +1. __init__(self, learning_content) +输入:learning_content:字符串,学习材料 +输出:无(构造函数) +功能:初始化打字逻辑状态 +需要包含: +存储学习材料 +初始化当前索引为0 +初始化错误计数为0 +2. check_input(self, user_text) +输入:user_text:字符串,用户输入的文本 +输出:字典,包含检查结果 +correct:布尔值,当前输入是否正确 +expected:字符串,当前期望的字符 +position:整数,当前位置 +completed:布尔值,是否完成 +accuracy:浮点数,准确率 +功能:检查用户输入与学习材料的匹配情况 +需要包含: +逐字符比较逻辑 +进度跟踪 +准确率计算 +3. get_expected_text(self) +输入:无 +输出:字符串(当前期望输入的文本部分) +功能:获取用户接下来应该输入的内容 +需要包含: +返回从当前位置开始的一定长度文本(如10个字符) +处理文本结束情况 +4. get_progress(self) +输入:无 +输出:字典,包含进度信息 +current:整数,当前位置 +total:整数,总长度 +percentage:浮点数,完成百分比 +remaining:整数,剩余字符数 +功能:获取当前学习进度统计 +5. reset(self, new_content=None) +输入:new_content:字符串(可选),新的学习材料 +输出:无 +功能:重置打字状态 +需要包含: +重置当前索引为0 +重置错误计数 +如果提供了新内容,更新学习材料 +6. get_statistics(self) +输入:无 +输出:字典,包含统计信息 +total_chars:整数,总字符数 +typed_chars:整数,已输入字符数 +error_count:整数,错误次数 +accuracy_rate:浮点数,准确率 +功能:获取打字统计信息 +""" \ No newline at end of file -- 2.34.1