MSD自动化工具平台开发任务记录
MSD自动化工具平台是一款基于Python Tkinter开发的桌面应用,旨在提供数据检查、自动化测试和辅助工具等功能。项目遵循现代科技风格的UI设计规范,采用统一的模块布局和交互模式。本文记录了从第一阶段核心功能开发到第三阶段新增模块开发的完整过程。
第一阶段:核心功能开发(7月22日)
1. 预售数据检查模块创建
任务目标:基于MSD数据检查模块创建预售数据检查模块,实现产品状态一致性校验。
关键改进:
- 新增产品状态检查逻辑,将各表格中的产品代码状态与列表表格的"是否上线"列进行对比
- 重构新品/常规品分类方式,由用户从列表表格中选择分类列,并支持用户勾选唯一值进行分类
- 优化校验规则:
- 新品表格仅检查列表中分类为"新品"的产品代码状态
- 常规品表格仅检查列表中分类为"常规品"的产品代码状态
- 爆款产品表格检查同分类内相同产品代码的状态一致性,无需与列表表格对比
技术实现:完成模块配置、函数创建、路由配置和输入验证逻辑的开发。
2. UI设计全面升级
设计理念:明亮配色方案、现代简约科技风格、PC端显示(内容宽度1700px)
主要改动:
- 顶部导航栏改为白色背景,提升视觉层次感
- 为每个模块配置独特的图标颜色,避免重复
- 实现悬停效果:模块边框亮起与图标相同的颜色,无尺寸变化
- 移除"进入"按钮,点击模块任意位置即可进入对应功能
- 修复图标显示问题,确保图标完全显示在模块上方
技术难点解决:
- 通过将悬停事件绑定到所有子元素,解决了边框闪烁问题
- 使用
place()定位替代lift()方法,避免Tkinter层级管理错误
3. 核心Bug修复
问题1:运行程序时出现_tkinter.TclError,提示"wrong # args: should be ".!frame2.!frame.!canvas.!frame.!frame.!canvas2 raise tagOrId ?aboveThis?""
原因分析:Canvas的tkraise()方法用于管理内部元素层级,需要传入tag或id参数,不能无参调用。
解决方案:移除icon_canvas.tkraise()调用,因为place()定位会自动将控件显示在顶层。
问题2:点击左侧分类时所有模块消失
原因分析:
_card_running_tags字典的值被设置为None,导致调用pack()时出错_refresh_grid和_on_search方法中调用了_card_running_tags.clear(),导致运行状态标记丢失
解决方案:
- 在
_build_grid_card中创建实际的"● 运行中"Label组件 - 移除不必要的clear操作
- 将Canvas卡片渲染简化为Frame布局
4. 界面细节优化
任务目标:增加副标题区域的垂直高度
改动:在_layout_top_bar_module方法中,将副标题的内边距从pady=(2, 0)调整为pady=(6, 8),上方增加4px,下方增加8px,提升视觉舒适度。
第二阶段:辅助功能完善(7月23日)
5. 使用与问题模块重构
任务目标:将"使用与问题"模块重构为工具类下属模块,添加所有现有模块的使用说明和常见问题解答。
完成工作:
- 更新FAQ模块(
faq_beautified.py),包含10个功能模块的使用说明和17个常见问题解答 - FAQ内容涵盖浏览器自动化问题和各模块使用问题
- 优化首页搜索功能,支持FAQ内容搜索
- 搜索结果采用上下两栏布局:上栏显示模块卡片,下栏显示FAQ结果卡片
- 新增
get_faq_data()和_build_faq_result_card()函数
测试结果:程序启动成功,11个模块全部正常加载,搜索功能测试通过。
第三阶段:新增模块开发(7月24日)
6. Excel辅助工具模块开发
任务目标:创建Excel辅助工具模块,提供Excel函数、脚本和透视表操作的快速查询功能。
功能架构:
| Tab页 | 内容 | 数量 | 特色功能 |
|---|---|---|---|
| Excel函数 | 查找、数学、逻辑、文本、日期函数 | 15个 | 详细语法说明和示例 |
| Python脚本 | 读写Excel、数据处理、高级操作 | 10个 | 一键复制代码 |
| 透视表操作 | 各类透视表应用场景 | 8个 | 操作指南 |
通用功能:
- 实时关键词搜索,涵盖所有Tab页内容并高亮显示
- 分类浏览,支持按类别组织内容
- 可展开卡片,展示详细信息
- Toast通知,复制代码成功后提示
注册配置:在MSD_Tools_Platform.py中注册到"工具类"分类,图标为📊,颜色为#10b981。
7. Excel辅助工具Bug修复
Bug1:NameError: name 'C_BG' is not defined
原因:_build_search方法错误使用了主平台的颜色常量。
解决方案:使用模块内定义的Colors类常量替代。
Bug2:分类展开报错,出现"bad screen distance '0 2'"错误
原因:
_build_scrollable方法中lambda参数名错误(应为e而非event)canvas.create_window调用顺序问题
解决方案:修正参数名,调整调用顺序,只保留带tags='scroll_win'的调用。
Bug3:搜索功能异常,关键词高亮失效
原因:
FunctionCard类中tk.Text控件未调用pack()方法进行布局- 原搜索功能仅在当前Tab内进行
解决方案:
- 修复控件布局问题
- 修改
_on_search()方法实现跨Tab搜索 - 创建
SearchResultCard类实现搜索结果列表和关键词高亮
搜索范围:Excel函数(名称、描述、分类、语法)、Python脚本(名称、描述、分类、代码)、透视表操作(名称、描述、分类)。
Bug4:搜索后Tab切换失效
原因:_show_search_results()方法未更新_current_tab变量。
解决方案:修复Tab切换逻辑,确保删除搜索关键词后点击Tab按钮能正常切换到对应Tab。
工程规范总结
设计约束
- UI设计遵循明亮配色方案,现代简约科技风格
- 模块布局整齐统一,PC端内容宽度控制在1700px左右
- 每个模块拥有唯一的图标颜色,悬停边框颜色与图标颜色一致
- 点击模块任意位置进入功能,无需"进入"按钮
- 悬停效果仅点亮模块边框,无尺寸变化,激活时边框加粗
开发经验
- 状态检查逻辑需要根据分类进行差异化处理,不能统一使用列表表格的"上线"列进行对比
- Tkinter Canvas的
tkraise()方法需要传入tag/id参数,place()定位无需额外的raise操作 - 悬停事件需要绑定到所有子元素,避免鼠标在子元素上移动时触发边框闪烁
- 字典值不能设为
None,需要创建实际的组件对象 - 搜索功能需要考虑跨模块/跨Tab的全局搜索需求
项目状态
截至目前,MSD自动化工具平台已包含11个功能模块,涵盖数据检查、自动化测试和辅助工具等多个领域。所有模块均已通过测试,可以正常加载和使用。项目仍在持续迭代中,将根据用户需求不断完善功能和优化体验。