使用python实现一个待办管理小工具

一个全开源,纯单机版的python待办管理小工具

Posted by chaoxiaodi on March 8, 2021

前言

虽然平时工作中用的语言最多的还是python,但好像还没有写一篇关于python的文章

本篇文章就记录一个完成一个待办任务管理小工具的过程

依照惯例,还是先上地址:github-pytodolist

Why

先说一下为什么要做这个东西,或者说为什么要自己去写这个东西

其实我本人还是以不重复造轮子为原则的

而且市面上也有不少已经成熟的类似软件或者说小工具

自己体验过几个,有的必须要注册登录,有的必须联网,有的有广告,有的收费

但有些工作上的东西还是需要有一定的私密性

所以一些联网的和注册登录的就首先被我抛弃了

总而言之,言而总之吧

最后还是决定自己写一个

How

在完成这个小工具之前我一直都是用文本去记录每天的工作或者接下来要做的工作

记录过程中发现效果不是很理想

有可能有些任务的时间周期略长

有可能有些任务重复性比较高

所以根据自己的工作性质与工作习惯吧

通过两个维度进行设计

1、时间维度:一次性任务、周期重复任务(日周月年)

2、结合学习时间管理时候的四象限原则:紧急重要,紧急不重要,重要不紧急,不紧急不重要

在未动手之前,已经在大脑中模拟过这个软件的形态

想过该做成什么样

是否使用数据库

是否保存历史记录

是否能让非专业认识使用

最终还是选择了使用可视化来呈现,不使用数据库,而用文本文件进行存储

python的可视化方案有很多,我使用的是 pyqt 之前也用过tk

发现还是pyqt要更好一些

界面设计一共两个部分:录入内容,展示内容

录入内容又可以细分为:录入一次性任务,录入重复任务

展示内容也一样:展示一次性任务,与展示重复任务

可能有人觉得展示嘛,只要录入的就都显示出来就好了

其实这跟运维的监控告警一个道理,如果告警信息设计不妙;那告警信息其实很容易被忽略

Doing

最开始设计界面蠢到纯代码手写去实现

后来发现有个designer可以通过拖拽控件的方式实现界面的设计

一个小提示:设计界面的时候不要设计的过于详细,只做框架;具体的通过代码去控制

主程序页面涉及为左右两个大部分

左侧录入:录入时间的选择,任务性质的选择,待办内容的填写,周期任务的填写

右侧展示:一个提示的框,一个展示内容的树

真正实现逻辑的类 代码只有短短不到500行,被我分成了将近40个类

对代码感兴趣的可以自行查看代码

代码通过对几个文本文档的增删改查最终实现了这个小工具

完成后我一直在使用,发现效果还是可以的

在这说一下关于展示的问题

上面说到为什么不一股脑全部展示

这在说下如何去展示

周期性任务自然代表着有规律性的作业

当然要在合适的时间再去展示更为精确

如果一直展示在列表中会让人容易遗忘忽略

此工具的逻辑是,如果是周期任务只在设计的当天才去添加提醒;但如果在没有操作完成的情况下;

会一直显示提醒

举个例子:比如我设置了周二上午进行维护的待办;

那么这个待办只有在周二上午才开始显示,然后一直保持显示到我点击完成;

最近又在开始不误专业的开始搞前端代码:后面可能会用vue实现一个网页版

后记

文件已经打包了 exe 格式支持windows直接使用

有需要的可以通过微信公众号:老骥不伏枥只是近黄昏 回复 pytodolist 获取

如果有任何疑问或建议欢迎讨论

另:求大佬给设计更好看的界面

Q:594934249

—我是超小弟·一名不误专业的秃头运维—

博客:blog.chaoxiaodi.tech

github:github:chaoxiaodi

微信公众号:老骥不伏枥只是近黄昏