代码示例 | Python开发Todolist

Python-第三方轻量级本地TodoListfor洛谷 第三方轻量级本地 Todo List for 洛谷 立即下载
import json
from datetime import datetime
import tkinter as tk
from tkinter import ttk, messagebox, simpledialog

class TodoList:
    # 保持原有数据操作类不变
    def __init__(self, filename='todos.json'):
        self.filename = filename
        self.tasks = []
        self.next_id = 1
        self.load()

    def load(self):
        try:
            with open(self.filename, 'r') as f:
                data = json.load(f)
                self.tasks = data.get('tasks', [])
                self.next_id = max(task['id'] for task in self.tasks) + 1 if self.tasks else 1
        except (FileNotFoundError, json.JSONDecodeError):
            self.tasks = []
            self.next_id = 1

    def save(self):
        with open(self.filename, 'w') as f:
            json.dump({'tasks': self.tasks}, f, indent=2)

    def add_task(self, content):
        if not content.strip():
            return False
        task = {
            'id': self.next_id,
            'content': content,
            'created_at': datetime.now().isoformat(),
            'completed': False
        }
        self.tasks.append(task)
        self.next_id += 1
        self.save()
        return True

    def complete_task(self, task_id, completed=True):
        for task in self.tasks:
            if task['id'] == task_id:
                task['completed'] = completed
                self.save()
                return True
        return False

    def delete_task(self, task_id):
        self.tasks = [task for task in self.tasks if task['id'] != task_id]
        self.save()
        return True

class TodoApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Todo List 应用程序")
        self.geometry("800x600")
        
        self.todo = TodoList()
        self.create_widgets()
        self.refresh_list()

    def create_widgets(self):
        # 顶部输入区域
        input_frame = ttk.Frame(self, padding=10)
        input_frame.pack(fill=tk.X)
        
        self.task_entry = ttk.Entry(input_frame, width=50)
        self.task_entry.pack(side=tk.LEFT, expand=True, padx=5)
        
        add_btn = ttk.Button(input_frame, text="添加任务", command=self.add_task)
        add_btn.pack(side=tk.LEFT, padx=5)

        # 任务列表区域
        list_frame = ttk.Frame(self)
        list_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        
        self.tree = ttk.Treeview(list_frame, columns=('status', 'content', 'time'), show='headings')
        self.tree.heading('status', text='状态', anchor=tk.W)
        self.tree.heading('content', text='任务内容', anchor=tk.W)
        self.tree.heading('time', text='创建时间', anchor=tk.W)
        
        self.tree.column('status', width=80, anchor=tk.W)
        self.tree.column('content', width=400, anchor=tk.W)
        self.tree.column('time', width=200, anchor=tk.W)
        
        vsb = ttk.Scrollbar(list_frame, orient="vertical", command=self.tree.yview)
        self.tree.configure(yscrollcommand=vsb.set)
        
        self.tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        vsb.pack(side=tk.RIGHT, fill=tk.Y)

        # 操作按钮区域
        btn_frame = ttk.Frame(self, padding=10)
        btn_frame.pack(fill=tk.X)
        
        ttk.Button(btn_frame, text="标记完成", command=self.mark_complete).pack(side=tk.LEFT, padx=5)
        ttk.Button(btn_frame, text="删除任务", command=self.delete_task).pack(side=tk.LEFT, padx=5)
        ttk.Button(btn_frame, text="显示全部", command=lambda: self.refresh_list()).pack(side=tk.LEFT, padx=5)
        ttk.Button(btn_frame, text="仅未完成", command=lambda: self.refresh_list(False)).pack(side=tk.LEFT, padx=5)
        ttk.Button(btn_frame, text="仅已完成", command=lambda: self.refresh_list(True)).pack(side=tk.LEFT, padx=5)

    def add_task(self):
        content = self.task_entry.get()
        if self.todo.add_task(content):
            self.task_entry.delete(0, tk.END)
            self.refresh_list()
        else:
            messagebox.showwarning("输入错误", "任务内容不能为空!")

    def mark_complete(self):
        selected = self.tree.selection()
        if not selected:
            messagebox.showwarning("操作错误", "请先选择任务!")
            return
        
        task_id = int(self.tree.item(selected[0])['values'][0])
        if self.todo.complete_task(task_id):
            self.refresh_list()
        else:
            messagebox.showerror("操作失败", "找不到指定任务!")

    def delete_task(self):
        selected = self.tree.selection()
        if not selected:
            messagebox.showwarning("操作错误", "请先选择任务!")
            return
        
        if messagebox.askyesno("确认删除", "确定要删除选中的任务吗?"):
            task_id = int(self.tree.item(selected[0])['values'][0])
            if self.todo.delete_task(task_id):
                self.refresh_list()
            else:
                messagebox.showerror("操作失败", "删除任务失败!")

    def refresh_list(self, show_completed=None):
        # 清空当前列表
        for item in self.tree.get_children():
            self.tree.delete(item)
        
        # 根据筛选条件显示任务
        tasks = self.todo.tasks
        if show_completed is not None:
            tasks = [t for t in tasks if t['completed'] == show_completed]
        
        for task in sorted(tasks, key=lambda x: x['id'], reverse=True):
            status = "已完成" if task['completed'] else "未完成"
            create_time = datetime.fromisoformat(task['created_at']).strftime("%Y-%m-%d %H:%M")
            self.tree.insert('', tk.END, values=(task['id'], status, task['content'], create_time))

if __name__ == "__main__":
    app = TodoApp()
    app.mainloop()
to-do-list:用python做清单 待办事项 用python做清单 立即下载

相关推荐

todolist-app:待办事项清单应用程式,可管理您的工作

todolist应用 Todo-List应用程序可管理您的任务此应用程序是使用Flask框架通过Python制作的。 其功能:-读取要执行的任务-将任务设置为已完成-删除尚未完成的任务 这个应用程式已在Ubuntu上启动 要运行应用程序,您必须激活Virtualenv并在运行后使用python3 app.py启动它

用python实现todolist_用 Python 开发一个 【个人计划 todolist】

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。有一句话是这样说的:“凡事预则立,不预则废”,说的是我们在做事之前,最好制定好你的计划,然后有序的去执行,这样不会产生过多的错误和不爽,如果什么都不准备的话,人就容易废掉。今天,你废了么?为了让我们不要那么快的废掉,要不我们用 Python 来写一个网页版的 todolist, 然后在里面制定自...

weixin_35725147的博客 751

todolist待办事项

本人设计,制作的简单的待办事项todolist,包括前台页面,后台程序。功能齐全。供行业类参考

用python实现todolist_开发“todolist“”项目及其自己的感悟

一,项目题目:实现“todolist项目”该项目主要可以练习js操控dom事件,事件触发之间的逻辑关系,以及如何写入缓存,获取缓存、固定。二,todolist简介ToDoList是一款非常优秀的任务管理软件,用户可以用它方便地组织和安排计划。该软件短小精悍,仅有一个 数百 KB 的可执行文件就能完成所有功能,并且界面设计优秀,初级用户也能够快速上手。todolist具体功能ToDoList 帮你...

weixin_39678426的博客 1296

无线自组织网络基础知识

参考书籍:《无线自组织网络路由协议及应用》 目录第一章 绪论1.1 无线自组织网络概述1.1.1 无线自组织网络的定义及分类1.1.2无线自组织网络的主要特点1.1.3无线自组织网络的应用与发展1.无线自组织网络的应用2.无线自组织网络的起源和发展1.2典型的无线自组织网络1.2.1移动Ad Hoc网络1、移动Ad Hoc网络的定义2.移动AdHoc网络的特点3.移动Ad Hoc网络的应用1.2....

逸凌Time 2万+

PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

前言 原理简介 输入参数准备 1 objectPoints特征点世界坐标 2 imagePoints特征点在摄像头下的像素点坐标 3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下的坐标 2求相机在世界坐标中的坐标 3效果求解相机在世界坐标系下的坐标点 4求解代码1.前言  很多时候,当我们利用单目相机获取图像时,往往只能获取图像中

cocoaqin的博客 5万+

用python实现todo功能

从网上找到的用python实现todo list的文章,这里将todo class贴出来,基本的todo功能都包含在这个class里了。

天飓的技术博客 468

基于FPGA的示波器设计

ADC 、DAC、FPGA、LCD液晶、示波器

FDL_AQ的博客 1万+

用python实现todolist_todolist项目

url(r'^index/$', "todolist.views.index", name="index"),url里面的视图函数的地址要指定app在views先写好一个视图函数作为测试配置好之后同步数据库syncdb 然后runserver我把index.html文件及配置的css属性直接都放到了teplates里面,结果,没有显示css,js样式,还是配置一下静态文件妈的,配置一个静态文件...

weixin_39576336的博客 960

LVDS信号调试必备:5分钟搞懂Xilinx IDELAYE3的TIME模式校准

本文深入解析了在Xilinx Ultrascale系列FPGA中调试LVDS信号时,如何正确使用IDELAYE3的TIME模式进行精密延迟校准。文章重点阐述了IDELAYCTRL、EN_VTC管脚与校准状态机的协同工作机制,揭秘了内置自校准(BISC)中Align_Delay的影响,并提供了从抽头值计算到实际眼图优化的完整实战方案,帮助工程师快速解决高速接口的时序问题。

joy55的博客 217

低功耗蓝牙技术 > GAP和GATT介绍

GAP和GATT作为蓝牙协议栈中的关键协议,为BLE设备之间的通信提供了标准和框架。GAP主要负责设备的连接、广播和角色定义,而GATT则定义了BLE设备之间的具体通信方式,通过Services和Characteristics实现数据的传输和交换。在蓝牙技术的发展中,GAP和GATT两个协议扮演着关键的角色,为BLE(低功耗蓝牙)设备之间的通信提供了规范和框架。GATT连接是建立在GAP协议之上的,是一种独占连接,一个BLE外设同时只能连接一个中心设备。连接建立后,通信是双向的,不同于GAP的单向通信。

DL_62532的专栏 4032

ToDoList

基于python构建的todolist桌面应用

CliPg的博客 677

Fiori Elements 的 Adapting the UI: Analytical List Page 全解析与实战

摘要:本文详细介绍了如何通过SAP Fiori elements的UI Adaptation功能对Analytical List Page(ALP)进行细粒度适配。重点讲解了页头过滤区、图表区域、表格区域等关键组件的可配置属性,包括过滤区折叠/固定、图表类型限制、表格滚动阈值等实用功能。文章强调这些适配均可通过可视化工具完成,无需修改业务代码,并提供了典型场景的实践清单。适用于SAP Fiori elements for OData V2项目,建议配合SAP Fiori tools的Adaptation E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 438

Python:masonite初体验TodoList

文档:https://docs.masoniteproject.com/ 初次体验框架,感觉里边提供了丰富的命令行工具可以快速开发, 主要是ORM很棒,区别于Python生态Django等的ORM,和PHP的laravel很像,简单高效 一、环境配置 环境 Python 3.4+ masonite 2.2.26 masonite-cli 2.2.2 安装 $ pip install masoni...

彭世瑜的博客 2894

YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 728

学Simulink——基于软开关与高频变换的整流器系统场景实例:移相全桥ZVS整流器在轻载条件下的效率优化

本文以Simulink为平台,详细介绍了移相全桥ZVS整流器在轻载条件下的建模与优化方法。通过六个步骤系统讲解了从项目创建到仿真运行的全过程,重点分析了移相全桥拓扑结构、ZVS检测逻辑设计及轻载特性。结果显示,传统移相全桥在轻载时ZVS失效导致效率下降(<88%)。针对此问题,提出了动态频率调整、不对称半桥模式等优化策略。该案例为理解软开关技术、提升电源效率提供了实用建模方法和优化思路。

xiaoheshang_123的博客 119

用python实现todolist_So easy !用 Python 开发一个todolist

有一句话是这样说的:“凡事预则立,不预则废”,说的是我们在做事之前,最好制定好你的计划,然后有序的去执行,这样不会产生过多的错误和不爽,如果什么都不准备的话,人就容易废掉。今天,你废了么? 为了让我们不要那么快的废掉,要不我们用 Python 来写一个网页版的 todolist, 然后在里面制定自己的计划怎么样? 可能你会想到像这种简单一些的网页交互,可以用 Flask 来实现,不过小帅b今天要...

weixin_42465953的博客 996

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于wxPython的TodoList任务管理器开发详解

本文介绍了使用Python和wxPython开发一个功能完善的TodoList任务管理器的过程。项目核心功能包括任务增删改查、优先级管理、分类管理、截止日期设置、多条件筛选和数据持久化存储等。文章详细解析了代码结构,重点介绍了自定义列表控件TodoListCtrl和任务编辑对话框TaskDialog的实现,包括键盘导航、UI布局和数据加载等关键设计。该项目适合wxPython初学者学习GUI编程,也可作为实用工具直接使用,涵盖了从基础控件到高级功能的完整开发流程。

Winfredzhang的博客 1209

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python 的框架 dash 开发TodoList Web 应用

这是一个基于 Dash 和 SQLAlchemy 的现代化 TodoList Web 应用,提供了简单而强大的待办事项管理功能。

大白菜代码的博客 706

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

用python实现todolist_Django练习——TodoList

Django 紧紧地遵循这样的 MVC 模式,能够称得上是一种 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含义:M,数据存取部分,由django数据库层处理。V,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。C。依据用户输入委派视图的部分,由 Django 框架依据 URLconf 设置,对给定 URL 调用适当的Python 函数。因为 C 由框架自行处理,而...

weixin_39780784的博客 602

用python实现todolist_基于EOS3.0实现todolist下篇-前端

一 下载前端代码二 安装nodejssudo apt-get install python-software-propertiescurl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -sudo apt-get install -y nodejs安装完成后查看安装node版本,$ node -vv8.11.2三 安装项目依赖包cd...

weixin_39536728的博客 267

用python实现todolist_和我一起入坑-Vue入门-ToDoList

和我一起入坑-Vue入门-ToDoList本项目是仿照这个做滴 ToDoList 。使用Vue实现这个代办事项功能。完整的项目在这里GitHub vue-todolist。(一)基本功前置项安装Node,建议使用nvm安装,逼格比较高(手动滑稽)然后全局安装 Vue CLI居然还改名了npm install -g @vue/cli创建项目vue create vue-todolist启动CLI服...

weixin_39617113的博客 298

python 检测网页输入框并输入_So easy !用 Python 开发一个todolist

有一句话是这样说的:“凡事预则立,不预则废”,说的是我们在做事之前,最好制定好你的计划,然后有序的去执行,这样不会产生过多的错误和不爽,如果什么都不准备的话,人就容易废掉。今天,你废了么?为了让我们不要那么快的废掉,要不我们用 Python 来写一个网页版的 todolist, 然后在里面制定自己的计划怎么样?可能你会想到像这种简单一些的网页交互,可以用 Flask 来实现,不过小帅b今...

weixin_42523792的博客 754

利用 Flask 写一个 todolist (一)

准备工作 开始写todolist之前,必然需要写一个简单的程序流程及相关参数,这里我使用思维导图的方式设计了一个简单的界面以及需要实现的内容,较为粗糙,供各位参考。本人自学编程,错漏之处还望各位海涵。 这里主要实现以下几个功能: 时间显示(主要用于显示服务器时间,为后期番茄钟功能进行开发) todolist部分(主要由一个勾选框与文本组成,打勾后自动划线,刷新后自动消失) 新建任务(用于新建t...

葫芦娃的爷爷的博客 1472

用 Python 开发一个 【个人计划 todolist】

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击即可加入 有一句话是这样说的:“凡事预则立,不预则废”,说的是我们在做事之前,最好制定好你的计划,然后有序的去执行,这样不会产生过多的错误和不爽,如果什么都不准备的话,人就容易废掉。 今天,你废了么? 为了让我们不要那么快的废掉,要不我们用 Python 来写一个网页版.

【优快云官方推荐】 244
上一篇: Vscode中Latex配置
Trabing
博客等级 码龄11年 18粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值