python 写一个工作 简单 番茄钟

news2025/5/13 20:03:00

1、图

 2、需求

番茄钟(Pomodoro Technique)是一种时间管理方法,由弗朗西斯科·西里洛(Francesco Cirillo)在 20 世纪 80 年代创立。“Pomodoro”在意大利语中意为“番茄”,这个名字来源于西里洛最初使用的一个形似番茄的厨房定时器。

该方法的基本理念是将工作时间划分为固定长度的“工作时段”和“休息时段”。通常,一个完整的番茄钟周期包括 25 分钟的工作时间和 5 分钟的休息时间。每完成四个番茄钟周期后,可以进行一次较长时间的休息,比如 15 - 30 分钟。

使用番茄钟的步骤如下:

1. 选择一个待完成的任务。
2. 将番茄钟设定为 25 分钟,开始专注工作。
3. 直到番茄钟响起,在纸上画一个 X 进行记录。
4. 休息 5 分钟。
5. 每完成 4 个番茄钟,进行一次 15 - 30 分钟的长时间休息。
这种时间管理方法有助于提高工作效率,减少拖延,同时也能让大脑得到适当的休息,避免过度疲劳。

 3、代码:

import tkinter as tk
import time
import winsound

# 定义番茄钟的时间(单位:分钟)
WORK_TIME = 25
BREAK_TIME = 15
LONG_BREAK_TIME = 20  # 长时间休息时间,可在 15 - 30 分钟间调整
POMODORO_COUNT_FOR_LONG_BREAK = 4

class PomodoroScreensaver:
    def __init__(self, root):
        self.root = root
        self.root.attributes('-fullscreen', True)
        self.root.configure(bg='black')
        self.root.bind('<Escape>', self.quit_screensaver)

        self.time_left = WORK_TIME * 60
        self.is_working = True
        self.pomodoro_count = 0

        self.label = tk.Label(root, text=self.format_time(self.time_left), font=('Helvetica', 100), fg='white', bg='black')
        self.label.pack(expand=True)

        self.update_clock()

    def format_time(self, seconds):
        minutes = seconds // 60
        remaining_seconds = seconds % 60
        return f'{minutes:02d}:{remaining_seconds:02d}'

    def update_clock(self):
        if self.time_left > 0:
            self.time_left -= 1
            self.label.config(text=self.format_time(self.time_left))
            # 根据工作状态更新字体颜色
            if self.is_working:
                self.label.config(fg='red')
            else:
                self.label.config(fg='green')
            self.root.after(1000, self.update_clock)
        else:
            if self.is_working:
                self.pomodoro_count += 1
                winsound.Beep(2000, 1000)
                if self.pomodoro_count % POMODORO_COUNT_FOR_LONG_BREAK == 0:
                    self.time_left = LONG_BREAK_TIME * 60
                else:
                    self.time_left = BREAK_TIME * 60
                self.is_working = False
            else:
                winsound.Beep(2000, 1000)
                self.time_left = WORK_TIME * 60
                self.is_working = True
            # 切换状态后更新字体颜色
            if self.is_working:
                self.label.config(fg='red')
            else:
                self.label.config(fg='green')
            self.update_clock()

    def quit_screensaver(self, event=None):
        self.root.destroy()

if __name__ == "__main__":
    root = tk.Tk()
    app = PomodoroScreensaver(root)
    root.mainloop()

注:字体变色 工作红色  休息 绿色  过度有响声

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2373845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyCharm 加载不了 conda 虚拟环境,不存在的

#工作记录 前言 在开发过程中&#xff0c;PyCharm 无法加载 Conda 虚拟环境是常见问题。 在不同情况下&#xff0c;“Conda 可执行文件路径”的指定可能会发生变化&#xff0c;不会一尘不变&#xff0c;需要灵活处置。 以下是一系列解决此问题的经验参考。 检查 Conda 安装…

设计模式学习整理

目录 UML类图 设计模式六大原则 1.单一职责原则 2.里氏替换原则 3.依赖倒置原则 4.接口隔离原则 5.迪米特法则(最少知道原则) 6.开(放封)闭原则 设计模式分类 1.创建型模式 2.结构型模式 4.行为型模式 一、工厂模式(factory——简单工厂模式和抽象工厂模式) 1.1、…

二分查找的理解

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int binary_search(int arr[], int k, int sz) {int left 0;int right sz - 1;//这个是下标&#xff0c;减一是因为在0开始的&#xff0c;怕越界&#xff08;访问无效&#xff09;while (left < right){int mid…

【Java】线程实例化 线程状态 线程属性

线程实例化 继承 Thread 类 创建类继承自 Thread 类 . class MyThread extends Thread重写 run() 方法 . Overridepublic void run(){// 线程要执行的任务代码}实例化自定义线程类 . 实现 Runnable 接口 创建类实现 Runnable 接口 . class MyRunnable implements Runnable实…

卫宁健康WiNGPT3.0与WiNEX Copilot 2.2:医疗AI创新的双轮驱动分析

引言:医疗AI的双翼时代 在医疗信息化的浪潮中,人工智能技术的深度融入正在重塑整个医疗行业。卫宁健康作为国内医疗健康和卫生领域数字化解决方案的领军企业,持续探索AI技术在医疗场景中的创新应用。2025年5月10日,在第29届中国医院信息网络大会(CHIMA2025)上,卫宁健康…

I2C通讯

3.1. 本章节的代码仓库 1 2 3 4 5 6 #如之前有获取则可跳过 #获取仓库 git clone https://gitee.com/LubanCat/lubancat_rk_code_storage.git#代码所在的位置 lubancat_rk_code_storage/quick_start/i2c3.2. i2c I2C(Inter&#xff0d;Integrated Circuit)是一种通用的总线协…

Excel实现单元格内容拼接

一、应用场景&#xff1a; 场景A&#xff1a;将多个单元格拼接&#xff0c;比如写测试用例时&#xff0c;将多个模块拼接&#xff0c;中间用“-”隔开 场景B&#xff1a;将某单元格内容插入另一单元格固定位置&#xff08;例如在B1中添加A1的内容&#xff09; 二、实际应用&a…

2025前端面试遇到的问题(vue+uniapp+js+css)

Vue相关面试题 vue2和vue3的区别 一、核心架构差异 特性Vue2Vue3响应式系统基于Object.defineProperty基于Proxy&#xff08;支持动态新增/删除属性&#xff09;代码组织方式Options API&#xff08;data/methods分块&#xff09;Composition API&#xff08;逻辑按功能聚合&am…

广东省省考备考(第八天5.11)—言语:逻辑填空(每日一练)

错题 解析 第一空&#xff0c;搭配“期盼”&#xff0c;且根据“生命&#xff0c;是来自上天的馈赠”&#xff0c;可知父母对孩子的出生是非常期盼的。A项“望穿秋水”&#xff0c;形容对远地亲友的殷切盼望&#xff0c;C项“望眼欲穿”&#xff0c;形容盼望殷切&#xff0c;均…

github+ Picgo+typora

github Picgotypora 本文将介绍如何使用Picgo在typora中实现上传服务 创建github仓库以及配置token 创建仓库 注意需要Initialize 添加README 配置为public 配置token github点击头像找到setting 选择Developer setting 配置token generate 选第一个第二个都行(我这里选第…

[网安工具] IP 信息收集工具 —— LBD · 使用手册

&#x1f31f;想了解其它网安工具&#xff1f;看看这个&#xff1a;[网安工具] 网络安全工具管理 —— 工具仓库 管理手册 lbd | Kali Linux ToolsVideolbd Usage ExampleTest to see if the target domain (example.com) is using a load balancer:rootkali:~# lbd example.c…

说说es配置项的动态静态之分和集群配置更新API

这天因为某件工作来到了es官网某个参数配置相关的页面&#xff0c;注意到了下图圆圈里的“Dynamic”&#xff1a; 链接&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/8.1/modules-cluster.html#misc-cluster-settings 显然这是对配置项的一个描述&am…

LLMs之Mistral Medium 3:Mistral Medium 3的简介、安装和使用方法、案例应用之详细攻略

LLMs之Mistral Medium 3&#xff1a;Mistral Medium 3的简介、安装和使用方法、案例应用之详细攻略 目录 Mistral Medium 3 简介 1、Mistral Medium 3 特点 Mistral Medium 3 安装和使用方法 2、使用方法 (1)、创建Agent (2)、模型微调 Mistral Medium 3 案例应用 Mistr…

并发设计模式实战系列(17):信号量(Semaphore)

&#x1f31f; 大家好&#xff0c;我是摘星&#xff01; &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第十七章信号量&#xff08;Semaphore&#xff09;&#xff0c;废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 信号量本质模型 2. 并发控制…

RAGMCP基本原理说明和相关问题解惑

一、RAG架构原理和局限性 1.1 概念解释 RAG&#xff08;Retrieval-Augmented Generation&#xff09;&#xff1a;检索增强生成&#xff0c;让大模型接受外部输入后&#xff0c;总结输出 向量数据库&#xff1a;向量数据通常是高维空间中的点&#xff0c;代表复杂的数据结构…

Java学习手册:服务注册与发现

一、服务注册与发现的概念 在微服务架构中&#xff0c;服务注册与发现是核心功能之一。由于微服务架构中服务实例的数量和位置是动态变化的&#xff0c;服务注册与发现机制允许服务实例在启动时自动注册到注册中心&#xff0c;并在停止时自动注销。其他服务可以通过查询注册中…

双向Transformer:BERT(Bidirectional Encoder Representations from Transformers)

基于Transformer架构&#xff0c;通过双向上下文建模训练&#xff0c;提高完成任务的性能。 一 BERT的核心理念 1.1双向上下文建模依赖 之前讲的双向递归是用两个RNN进行&#xff0c;而BERT是通过Transformer的自注意力机制同时捕捉上下文信息。 1.1.1掩码语言模型&#xf…

EdgeOne Pages MCP 入门教程

什么是MCP&#xff1f; MCP (Model Context Protocol) 是一个开放协议&#xff0c;允许 AI 模型安全地与本地和远程资源进行交互。通过在支持 MCP 的客户端&#xff08;如 Cline、Cursor、Claude 等&#xff09;上进行统一配置&#xff0c;可以让 AI 访问更多资源并使用更多工…

Maven 公司内部私服中央仓库搭建 局域网仓库 资源共享 依赖包构建共享

介绍 公司内部私服搭建通常是为了更好地管理公司内部的依赖包和构建过程&#xff0c;避免直接使用外部 Maven 中央仓库。通过搭建私服&#xff0c;团队能够控制依赖的版本、提高构建速度并增强安全性。公司开发的一些公共工具库更换的提供给内部使用。 私服是一种特殊的远程仓…

1688代采系统:技术架构与应用实践

在电商领域&#xff0c;1688 作为国内领先的 B2B 电商平台&#xff0c;拥有海量的商品信息。这些数据对于企业采购决策、市场分析、价格监控和供应链管理具有重要价值。本文将详细介绍如何使用 Python 爬虫技术&#xff0c;通过 1688 的商品详情接口&#xff08;item_search 和…