Z次元
文章 笔记 日志 代码
专题
专栏分类
文章归档
友链
友情链接
朋友圈
留言
头像
系列文章

AI Coding从零打造一款Todo待办桌面应用

系列文章
AI大模型记录分享
更新于:2026/4/27
|
发布于:2026/4/27
文章摘要
......

前言

作为一个经常被各种待办事项淹没的人,我试过不少待办管理工具,但总觉得少了点什么——要么界面太复杂,要么功能不够贴合自己的习惯。于是我想:不如自己写一个?

但我此前并没有开发过桌面应用。好在现在有了 AI 辅助编程工具,我决定尝试用 AI 帮我从零开始构建一款待办管理桌面应用。整个过程历时不算长,最终产出了一个功能完善、界面现代的应用。这篇文章记录了我的开发过程、AI 协作经验,以及踩过的一些坑。

项目介绍

Easy Todo 是一款基于 Python 的本地待办事项管理桌面应用,采用微软 Fluent Design 设计风格。

核心功能

  • 多视图导航:全部任务、今日任务、重要任务、已完成四个页面

  • 任务属性:优先级(无/低/中/高)、颜色标签(9 种)、截止日期、自动延期

  • 浮窗模式:无边框半透明浮窗,可拖动、可调整大小,支持固定位置和快速新建任务

  • 主题系统:浅色/深色/跟随系统三种模式,运行时实时切换

  • 系统集成:系统托盘、开机自启、窗口状态记忆

  • 数据管理:JSON 导入导出,智能合并策略

AI 协作开发经验

我的工作流

整个开发过程,我基本遵循这样的循环:

描述需求 → AI 生成代码 → 人工审核 → 运行测试 → 发现问题 → 描述问题 → AI 修复 → 循环

先让AI根据plan计划生成一个完整的项目,然后审查项目是否有问题,再让AI逐步完善细节和修复问题。

AI 擅长什么

样板代码生成:像数据库模型定义、CRUD 操作、设置页面的表单控件这类有固定模式的工作,AI 生成得又快又准。

UI 布局搭建:描述清楚布局需求("标题栏在上方,左边是标签,右边是按钮"),AI 能快速生成对应的 QVBoxLayout、QHBoxLayout 代码。

样式调整:告诉 AI "按钮要圆角 8px,hover 时背景色变深",它能直接写出样式代码。

重复性修改:比如"给所有视图都加上这个功能",AI 能准确找到所有需要修改的文件。

AI 不擅长什么

整体架构设计:AI 倾向于把所有代码塞进一个文件,需要人工引导它拆分模块、建立清晰的分层结构。

主题一致性:AI 经常在新增组件时忘记处理深色/浅色主题适配,导致切换主题后样式丢失。比如我在开发浮窗时,多次遇到主题切换后背景颜色不对的问题。

边界情况:AI 生成的代码通常只覆盖正常流程,异常处理往往不够。比如 PushButton 只传图标不传文本会报错,AI 最初并没有考虑到。

上下文遗忘:随着对话变长,AI 会"忘记"之前的约定。比如前面已经约定了用 QLabel 做按钮,后面新增按钮时它又用了 ToolButton,导致样式不一致。

实用技巧

  1. 需求要具体:不要说"加个过滤功能",要说"在 toolbar 左侧加一个下拉框,选项为全部/低/中/高优先级,选择后过滤列表"

  2. 分步实现:复杂功能拆成多个小步骤,每步验证后再进行下一步

  3. 及时回退:AI 的方案不对时,直接要求回退,不要在错误方向上反复修补

  4. 保持代码风格一致:明确告诉 AI 用什么方式实现(比如"用 QLabel 做按钮,不要用 ToolButton")

踩坑与解决方案

开发过程中遇到了不少问题,这里记录几个比较有代表性的。

坑 1:浮窗随主窗口最小化消失

最初浮窗使用 Qt.WindowType.Tool 窗口标志,这是 Qt 中"工具窗口"的标准做法。但发现主窗口最小化时,浮窗也跟着消失了。

原因:Tool 类型的窗口在 Qt 中被视为父窗口的附属窗口,父窗口最小化时会自动隐藏。

解决:改用 Window | WindowDoesNotAcceptFocus,让浮窗成为独立窗口,同时不抢占焦点。

坑 2:PySide6 中 SkipTaskbarHint 不存在

为了让浮窗不在任务栏显示,我尝试添加 SkipTaskbarHint 标志,结果直接报 AttributeError。

原因:PySide6 中这个标志的名称和 PyQt5 不同,或者在某些版本中不可用。

解决:使用 WindowDoesNotAcceptFocus 替代,效果类似。

坑 3:主题切换后划线样式丢失

切换深色/浅色主题后,已完成任务的删除线(text-decoration: line-through)消失了。

原因:主题切换时只刷新了浮窗样式,没有刷新卡片组件的样式。

解决:在主题切换回调中增加 _refresh_all_views() 调用,重新加载所有视图的卡片。

坑 4:浮窗固定恢复时主题不对

浮窗固定后关闭应用再重启,恢复的浮窗背景颜色与当前主题不符。

原因:浮窗初始化(_setup_floating)在主题设置(_apply_initial_theme)之前执行,浮窗创建时主题还没应用。

解决:将浮窗恢复逻辑延迟到主题应用之后,先标记 pending,主题设置完成后再显示浮窗并刷新样式。

坑 5:PushButton 只传图标报错

尝试用 PushButton(FluentIcon.CLOSE) 创建一个只有图标的按钮,结果报 TypeError: missing 1 required positional argument: 'text'。

原因:QFluentWidgets 的 PushButton 要求必须传入 text 参数。

解决:改用 ToolButton 或 TransparentToolButton,它们支持只传图标。

总结与反思

这个项目从零到完成,AI 辅助编程确实大幅提升了开发效率。粗略估计,如果没有 AI,同样的功能可能需要多花 2-3 倍的时间。特别是在 UI 布局、样式调整、样板代码这些方面,AI 的效率优势非常明显。

但 AI 编程也不是"躺平就能出活"。它更像是一个效率极高的初级开发者——执行力强,但需要你明确方向、把控质量。你需要:

  • 当好架构师:负责整体设计和模块划分

  • 当好 code reviewer:审核 AI 生成的每一行代码

  • 当好测试工程师:发现边界情况和样式不一致

  • 当好产品经理:明确需求,及时纠偏

总的来说,AI 辅助编程让我这样一个没有桌面软件开发经验的也能在短时间内做出一个功能完善、界面现代的应用。它降低了开发的门槛,但并没有降低对开发者的要求——你仍然需要理解代码、发现问题、做出决策。


项目源码:Easy Todo

版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
更多专栏文章推荐
AI大模型
拥抱AI,畅想未来
SpringBoot快速集成AI大模型
2026/1/21
人工智能与大模型基础
2025/6/30
更多专栏文章推荐
记录分享
使用AI Agent尝试重构我的网站
2026/3/23
Sunshine+Moonlight近乎0延迟的远程控制电脑/游戏串流
2025/4/8
评论区

删除确认

评论删除后无法恢复,请确认是否继续?
发表评论

这里还没有评论哦

快来发一条评论抢占前排吧

目录
1
前言
2
项目介绍
核心功能
3
AI 协作开发经验
我的工作流
AI 擅长什么
AI 不擅长什么
实用技巧
4
踩坑与解决方案
坑 1:浮窗随主窗口最小化消失
坑 2:PySide6 中 SkipTaskbarHint 不存在
坑 3:主题切换后划线样式丢失
坑 4:浮窗固定恢复时主题不对
坑 5:PushButton 只传图标报错
5
总结与反思
目录
1
前言
2
项目介绍
核心功能
3
AI 协作开发经验
我的工作流
AI 擅长什么
AI 不擅长什么
实用技巧
4
踩坑与解决方案
坑 1:浮窗随主窗口最小化消失
坑 2:PySide6 中 SkipTaskbarHint 不存在
坑 3:主题切换后划线样式丢失
坑 4:浮窗固定恢复时主题不对
坑 5:PushButton 只传图标报错
5
总结与反思
博客
文章 笔记 日志 代码
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
主页
菜单
置顶
主题
我的
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
柒: @2broear
确实,如果有原型图的话,ai确实是能复制的很好。不过我是因为不知道要怎么设计好才让ai自由发挥的
2broear:
得先指定风格,最好丢几张landpage给ai参考
1232:
学习nuxt来看看博主的源码
柒: @NOXBB
因为我们项目组算是最晚升级的一批了,很多问题都已经在agent前面的迭代版本优化修复了,而且我看了其它项目组总结的问题,大都是一些第三方中间件版本不兼容的问题
我的
关于我
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
开源博客
前端开源仓库
后端开源仓库
©2020 - 2026 By 十玖八柒 版权所有
豫ICP备20021466号