首页Python【Python计算生态】D...

【Python计算生态】Dooit——待办事项管理器

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

dooit 是一个用 Python 编写的基于终端的待办事项和笔记管理应用程序,它提供了简洁高效的方式来组织和跟踪任务与笔记。
    使用pip安装 dooit 和 dooit-extras,其中dooit-extras 是 Dooit 的扩展包,提供了一些额外的功能和增强特性,以丰富 Dooit 的使用体验:
    pip install dooit dooit-extras
    GitHub页面:
    https://github.com/dooit-org/dooit
    • dooit 基础知识:
    • 描述
    工作区和待办事项都有一个描述,可以在其中输入一串文字。对于待办事项,你可以在单词前加上 @ 来将其标记为 标签 或 分类。它没有特殊含义,可以根据需要使用。
    • 状态
    所有待办事项都有三种状态:已完成、待办 或 逾期。
    逾期表示任务处于待办状态,但截止日期已经过去。
    通过 TUI,可以将待办事项的状态切换为 待办 或 非待办。
    • 紧急程度
    紧急程度有 4 个级别,分别是 1、2、3 和 4,其中 4 和 1 分别表示最高和最低的紧急程度/优先级。
    • 截止日期
    除了 DDMMYYYY 格式外,还可以以其他形式输入截止日期。例如,可以输入 1 jan 2025Dooit 会自动解析它。
    • 努力程度(Effort
    在待办事项中,努力程度只是一个数字,它没有特定含义,可以根据需要设置为任何值,例如:努力点数、完成所需时间、连续完成的次数等。
    另外,还可以通过格式化器(Formatters进一步自定义其格式。
    • 周期性
    和其他待办应用一样,Dooit 也支持设置任务的重复周期。其是一个间隔值,用于指定任务重复的频率。例如,1 天 或 1 周。
    可以使用 <number><legend> 的格式设置它,例如,1m(分钟)1h(小时)1d()1w()
    02
    使用

    安装完成后,在终端中输入dooit即可启动应用程序,分为以下两个区域:

    • Workspace(工作区):主要用于对任务和笔记进行结构化管理,可以创建不同的目录、层级来组织相关内容,类似于电脑文件系统的文件夹结构,方便对大量任务和笔记进行分类存放。
    • Todos(待办事项区):聚焦于具体待办任务的展示和操作,在这里可以直观看到各项任务,并对其进行增删改查、标记完成等操作。
    启动应用后,按下?键可以查看 dooit 的所有快捷键和操作说明。
    以下是一些基本操作示例:
    • 启动 Dooit:在命令行中输入 dooit 并回车,进入 Dooit 界面。
    • 添加主任务:在Workspace区域通过 a 键,输入 “学习、娱乐” 两个主任务,然后通过 A 键在学习主任务下添加“Python、ArcGIS”两个子任务
    • 添加代办事项:选中“Python”子任务,通过 <tab>键切换到Todos区域,通过 a /A 键添加待办事项及其子项。
    • 设置任务截止日期:通过 d 键,一次设置各个代办事项的截止日期。
    • 设置任务紧急程度:通过 +/- 键,增加或降低待办事项的紧急程度。
    • 标记任务完成:通过 c 键,切换待办事项的完成状态。
    • 退出 Dooit:完成所有操作后,按下 <ctrl+q> 组合键退出应用。


    03
    配置

    Dooit 提供了一个强大的 API,允许用户通过 Python 脚本自定义其行为、外观和功能。通过 Dooit API,用户可以实现高度个性化的配置,比如自定义任务格式、状态栏、仪表盘,甚至添加新的功能。例如:
    • 格式化器(Formatters):通过格式化器,用户可以自定义任务、工作区、状态栏等的显示方式。例如,自定义任务的紧急程度图标、添加任务的进度显示、修改任务描述的样式。
    • 状态栏(Status Bar):用户可以通过 API 定制状态栏的内容和样式,添加自定义的文本、图标、时钟、模式指示器等。

    • 仪表盘(Dashboard):仪表盘是 Dooit 启动时显示的欢迎界面。通过 API,用户可以添加自定义的文本、ASCII 艺术、日期和时间等。

    • 事件监听(Event Listeners):Dooit API 支持事件监听机制,用户可以通过订阅特定事件(如启动、任务完成等)来执行自定义代码。

    Dooit 的官方文档和 Wiki 提供了详细的 API 使用指南和示例代码。可以访问 Dooit 官方文档 和 Dooit Extras 获取更多信息。

    配置文件通常是 config.py 脚本文件,存放路径可以通过以下命令获取:

    dooit config-loc

    以下是一个示例,通过 Dooit API 自定义了待办事项管理器的格式化器和仪表盘。为工作区和任务设置了描述、状态、紧急程度、截止日期的显示格式,并在仪表盘中添加了自定义标题、ASCII 艺术文字和当前日期显示,同时使用主题颜色进行样式化。

    # 导入 Dooit API 和相关模块
    from dooit.ui.api import DooitAPI, subscribe
    from dooit.ui.api.events import Startup
    from rich.style import Style
    from dooit_extras.formatters import *
    from dooit_extras.bar_widgets import *
    from dooit_extras.scripts import *
    from rich.text import Text


    # 定义一个函数,用于在 Dooit 启动时设置格式化器
    @subscribe(Startup)  # 使用装饰器订阅启动事件
    def setup_formatters(api: DooitAPI, _):
        fmt = api.formatter  # 获取 Dooit 的格式化器对象
        theme = api.vars.theme  # 获取当前主题配置

        # ------- 工作区(WORKSPACES)配置 -------
        # 定义工作区描述的格式,显示子任务数量
        format = Text(" ({}) ", style=theme.primary).markup  # 使用主题的主色调
        fmt.workspaces.description.add(description_children_count(format))  # 添加格式化器

        # --------- 待办事项(TODOS)配置 ---------
        # 状态格式化器:定义不同状态的图标
        fmt.todos.status.add(status_icons(completed="✅ ", pending="⏳ ", overdue="❗ "))

        # 紧急程度格式化器:定义不同紧急程度的图标
        u_icons = {1: "  ⏱️", 2: "  ⚠️", 3: "  🔥", 4: "  💣"}  # 紧急程度从低到高
        fmt.todos.urgency.add(urgency_icons(icons=u_icons))

        # 截止日期格式化器:定义截止日期的显示格式
        fmt.todos.due.add(due_casual_format())  # 使用非正式日期格式
        fmt.todos.due.add(due_icon(completed="📅 ", pending="⏰ ", overdue="🚨 "))  # 添加截止日期图标

        # 描述格式化器:显示任务完成进度和标签
        format = Text(" 📊 {completed_count}/{total_count}", style=theme.green).markup  # 使用主题的绿色
        fmt.todos.description.add(todo_description_progress(fmt=format))  # 添加任务进度显示
        fmt.todos.description.add(description_highlight_tags(fmt="🏷️ {}"))  # 添加标签高亮


    # 定义一个函数,用于在 Dooit 启动时设置仪表盘
    @subscribe(Startup)  # 使用装饰器订阅启动事件
    def setup_dashboard(api: DooitAPI, _):
        from datetime import datetime  # 导入 datetime 模块用于获取当前日期

        theme = api.vars.theme  # 获取当前主题配置

        now = datetime.now()  # 获取当前时间
        formatted_date = now.strftime("%A, %d %b ")  # 格式化日期为“星期, 日 月”的形式

        # 定义仪表盘的标题
        header = Text(
            "I alone shall stand against the darkness of my overdue tasks",  # 自定义文本
            style=Style(color=theme.primary, bold=True, italic=True),  # 使用主题的主色调,加粗并斜体
        )

        # 定义 ASCII 艺术文字
        ascii_art = r"""
                         .
                        / V
                      / `  /
                     <<   |
                     /    |
                   /      |
                 /        |
               /       /
              (      ) | |
      ________|   _/_  | |
    <________________)__)
        "
    ""

        # 定义仪表盘的内容
        items = [
            header,  # 标题
            "",  # 空行
            Text(ascii_art, style=api.vars.theme.primary),  # ASCII 艺术文字,使用主题主色调
            "",  # 空行
            Text(
                formatted_date,  # 当前日期
                style=Style(color=theme.secondary, bold=True, italic=True),  # 使用主题的次要色调,加粗并斜体
            ),
        ]
        api.dashboard.set(items)  # 设置仪表盘内容
    启动 Dooit,显示效果如下所示:


    更多内容可以前往官方文档查看:

    https://dooit-org.github.io/dooit/

    本篇文章来源于微信公众号: 码农设计师

    RELATED ARTICLES

    欢迎留下您的宝贵建议

    Please enter your comment!
    Please enter your name here

    - Advertisment -

    Most Popular

    Recent Comments