Python利用tkinter实现简易番茄钟
本文介绍如何使用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相关技巧,可查阅本站历史文章或继续关注后续更新,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













