Python利用tkinter实现简易番茄钟

林见深
林见深
发布时间:2026-10-16| 7人浏览过
原创

本文介绍如何使用Python的tkinter库开发一个简易番茄钟程序。该程序基于番茄工作法,设定25分钟工作与5分钟休息,通过图形界面显示倒计时并记录完成的番茄数量。代码包含窗口创建、计时逻辑及弹窗提示,适合Python初学者参考学习GUI应用开发。

项目背景与实现目标

在之前使用树莓派进行项目开发时,曾需要实现一个番茄钟功能。最终虽然该功能与树莓派硬件关联不大,但作为一个独立的Python程序,它记录了作者自学GUI编程的成果。

程序核心逻辑遵循番茄工作法:设定25分钟专注工作时间,随后进入5分钟休息时段。

每当一个完整的番茄工作时间段结束,系统会自动记录并增加一个番茄计数。

目前的实现方式未将休息时间计入番茄总数。由于作者尚未找到将工作时间与休息时间关联计数的最佳方案,因此仅统计专注时段的完成情况。

关于倒计时显示从24:59开始而非25:00,这可能与计时逻辑中每秒递减的机制有关,具体表现为启动时即视为已过1秒。

界面展示与代码实现

程序运行时的界面效果如下所示:

作者认为该界面设计简洁而不失质感,呈现出一种朴素的高级感。

代码实现参考了其他开发者编写的番茄钟项目,特别是在倒计时功能的实现上,采用了较为巧妙的处理技巧。

具体实现代码如下:

核心代码逻辑

import tkinter
from tkinter import messagebox
import time
 
#创建番茄钟窗口
root = tkinter.Tk()
root.title('番茄钟小程序')
root.geometry('300x300')
root.configure(bg='Tomato')
 
#创建计数的
count = 0
 
#创建完成计时后的弹窗
def mymsg():
    tkinter.messagebox.showinfo("提示", "恭喜完成一个番茄钟!!记得休息一下")
def mymsg2():
    tkinter.messagebox.showinfo("提示", "休息完毕!")
 
 
#创建番茄计时函数
# strptime()函数将字符串转换为datetime
def tomato_clock():
    remain_time = 1500
    bb = time.strftime('/  %M:%S', time.gmtime(remain_time))
    lb2.configure(text=bb)
    lb3.configure(text='剩余时间/总时间')
    for i in range(1500):
        remain_time -= 1
        aa = time.strftime('%M:%S', time.gmtime(remain_time))
        lb.configure(text=aa)
        root.update()
        time.sleep(1)
        if remain_time == 0:
            tomato_count()
            mymsg()
 
#创建计数的函数
def tomato_count():
    global count
    count += 1
    lb4.configure(text=count)
 
#创建休息时间函数
def relax():
    remain_time = 300
    bbb = time.strftime('/  %M:%S', time.gmtime(remain_time))
    lb2.configure(text=bbb)
    lb3.configure(text='剩余时间/总时间')
    for i in range(300):
        remain_time -= 1
        aaa = time.strftime('%M:%S', time.gmtime(remain_time))
        lb.configure(text=aaa)
        root.update()
        time.sleep(1)
        if remain_time == 0:
            mymsg2()
 
#创建各种标签
 
#番茄动态计时
lb = tkinter.Label(root, text=' ', bg='Tomato', fg='white', font='Verdana 16 bold', width=7, height=1)
lb.place(x=50, y=100)
 
#番茄固定时间
lb2 = tkinter.Label(root, text=' ', bg='Tomato', fg='white', font='Verdana 16 bold', width=8, height=1)
lb2.place(x=138, y=100)
 
#剩余时间/总时间
lb3 = tkinter.Label(root, text=' ', bg='Tomato', fg='white', font='Verdana 16 bold', width=14, height=2)
lb3.place(x=50, y=44)
 
#番茄个数显示
lb4 = tkinter.Label(root, text='0', bg='Tomato', fg='white', font='Verdana 16 bold', width=7, height=1)
lb4.place(x=25, y=20)
 
#左上角的 番茄:
lb5 = tkinter.Label(root, text='番茄:', bg='Tomato', fg='white', font='Verdana 16 bold', width=4, height=1)
lb5.place(x=5, y=20)
 
 
#按钮
#开启一个番茄
Button1 = tkinter.Button(root, text='开启一个番茄', bg='orange', fg='black', font='Verdana 13 bold', width=15, height=1, command=tomato_clock)
Button1.place(x=70, y=150)
 
#休息一下
Button2 = tkinter.Button(root, text='休息一下', bg='cornflowerblue', fg='black', font='Verdana 13 bold', width=15, height=1, command=relax)
Button2.place(x=70, y=200)
 
#循环
root.mainloop()

以上就是关于Python利用tkinter实现简易番茄钟的示例代码。如需了解更多Python tkinter相关技巧,可查阅本站历史文章或继续关注后续更新,感谢支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。