🐵指尖猴全新升级
第7课:做一个倒计时器
⏱️

做一个倒计时器

从零做一个能用的倒计时器——你的第一个完整项目

📖知识引入

🏗️项目骨架
桌面软件三件套:界面框架(如tkinter)、布局代码、业务逻辑。倒计时器骨架就是一个输入框+开始按钮+大号数字显示。告诉Qoder需求,它三个部分一并生成。
📐界面布局
经典倒计时布局:顶部输入分钟数,中间一个超大数字显示剩余时间,下面「开始」「暂停」「重置」三个按钮。居中排列,配色清爽,让人一眼看懂怎么用。
⚡计时逻辑
核心是用定时器每秒减1:启动时记录开始时间,每秒检查一次「现在-开始」过了多久,算出剩余秒数。难点是暂停时记住暂停点,继续时从那里接着算——别每秒减1那么简单。
🔔到点提醒
倒计时到0要提醒用户:可以弹窗、可以响铃、可以变颜色闪烁。用Python的winsound或playsound播放声音,配合messagebox弹窗「时间到啦!」,让倒计时真的有用。
🎨调试与美化
AI生成后逐个测试:能开始吗?暂停继续?到0响铃?发现Bug用调试器打断点查。最后美化:圆角按钮、剩余10秒变红、按下变色反馈,让倒计时器像App一样精致。
💡
倒计时三件套:界面布局+定时器逻辑+到点提醒——配合调试器查Bug!

🔍用Qoder做倒计时器的完整流程

# 倒计时器核心逻辑(tkinter)
import tkinter as tk
from tkinter import messagebox
import winsound

class Timer:
    def __init__(self):
        self.remaining = 0
        self.paused = True
        self.label = tk.Label(font=("Arial", 60), fg="blue")
        self.label.pack()

    def tick(self):
        if not self.paused and self.remaining > 0:
            self.remaining -= 1
            self.label.config(text=f"{self.remaining//60:02d}:{self.remaining%60:02d}")
            if self.remaining <= 10:
                self.label.config(fg="red")
            self.root.after(1000, self.tick)
        elif self.remaining == 0:
            winsound.Beep(1000, 1000)
            messagebox.showinfo("时间到", "倒计时结束!")

    def start(self, minutes):
        self.remaining = minutes * 60
        self.paused = False
        self.tick()

跟着做,第一个完整项目诞生:

第1步 新建项目文件夹
`qoder-projects/timer/`
Open Folder打开它
第2步 提需求(这样说)
「用Python的tkinter做一个倒计时器:
  - 输入分钟数点开始
  - 大号数字显示剩余时间
  - 有暂停/继续/重置按钮
  - 到0弹窗并响铃
  - 剩余10秒以下变红
  - 居中显示,配色淡蓝」
第3步 AI生成代码
timer/
  └─ countdown.py

第4步 运行测试

点 ▶️ 运行→窗口弹出
输入5→点开始→倒计时启动
点暂停→停住 ✅
点继续→接着走 ✅
到0→弹窗+响铃 ✅

第5步 调试器查Bug

「暂停后再继续会跳秒」

在暂停函数打断点→F5启动

单步执行发现:暂停时多减1秒

告诉AI→修复

第6步 迭代美化 「按钮加圆角」 「到0时数字闪烁3次」 每轮运行验证,直到满意。

第7步 给同学用 把countdown.py打包发同学, 装了Python就能直接跑!

你的第一个真实软件, 就此诞生!🎉

🎯小测验

第1题:倒计时器最难的功能通常是?

第2题:倒计时到0要提醒用户,可以用?

第3题:用Qoder做完倒计时器,发现「暂停跳秒」Bug应该?

📝本课知识点

  • ✓桌面三件套:界面框架+布局+逻辑
  • ✓倒计时布局:输入框+大数字+三按钮
  • ✓难点:暂停继续要记住暂停点
  • ✓到点弹窗+响铃+变色提醒
  • ✓调试器查暂停跳秒Bug
第7课完成!继续探索下一课吧 🚀