番茄项目2:阶段性目标——用纯python完成这个项目
前两天为完成这个项目做了初步的尝试,结果发现要修改下原先的设想。
我原先是计划直接做web项目的,但是经过几天研究后,发现要想做番茄工作法这种web项目,需要有不少的javascript代码,甚至用纯javascript也可以开发出挺好的效果,但是无奈我不太擅长javascript,也不想一边做项目,一边学 javascript,这样难度太大,于是我改变了想法,先用纯python完成项目,在设计完善后,移植到web平台。
因为其实光把这个项目做的比较完善就有许多需要思想的地方,如果在项目进行中再考虑代码怎么写,那就大大加在了开发的难度。
今天先写完成了生成计时器的代码:
import tkinter as tk
from datetime import timedeltaclass CountdownTimer:def __init__(self, master):self.master = mastermaster.title("专注时钟 (25分钟)")master.geometry("500x300")# 初始时间设置 (25分钟)self.total_seconds = 25 * 60 # 使用秒数作为基础计时单位self.is_running = Falseself.timer_id = None# 时间显示标签self.time_label = tk.Label(master, text=self.format_time(), font=('Arial', 48))self.time_label.pack(pady=20)# 按钮框架button_frame = tk.Frame(master)button_frame.pack()# 控制按钮self.start_btn = tk.Button(button_frame, text="开始", command=self.start_timer)self.start_btn.pack(side=tk.LEFT, padx=10)self.pause_btn = tk.Button(button_frame, text="暂停", command=self.pause_timer)self.pause_btn.pack(side=tk.LEFT, padx=10)self.stop_btn = tk.Button(button_frame, text="停止", command=self.stop_timer)self.stop_btn.pack(side=tk.LEFT, padx=10)def format_time(self):"""将秒数格式化为 MM:SS 形式"""minutes = self.total_seconds // 60seconds = self.total_seconds % 60return f"{minutes:02d}:{seconds:02d}"def update_timer(self):if self.total_seconds > 0 and self.is_running:self.total_seconds -= 1self.time_label.config(text=self.format_time())self.timer_id = self.master.after(1000, self.update_timer)elif self.total_seconds <= 0:self.stop_timer()self.time_label.config(text="时间到!", fg='red')def start_timer(self):if not self.is_running and self.total_seconds > 0:self.is_running = Trueself.update_timer()def pause_timer(self):if self.is_running:self.is_running = Falsedef stop_timer(self):self.is_running = Falseself.total_seconds = 25 * 60 # 重置为25分钟self.time_label.config(text=self.format_time(), fg='black')if __name__ == "__main__":root = tk.Tk()app = CountdownTimer(root)root.mainloop()
下一步,我将完成任务列表的功能。