点击“蓝字” 关注我们家长您好,恭喜您在AI时代关注了数程思维派,我是秦老师。
我们聚焦应用与创新,“AI驾驭者”帮助孩子构建驾驭AI而非被替代的能力。
本项目将打造一款Python GUI倒计时器,最终实现倒计时、开始/暂停/继续/重置功能,倒计时结束自动提示“时间到!”。
项目核心使用Python内置tkinter库,无需额外安装,操作简单又有趣。通过完成这个项目,孩子能掌握GUI界面开发、函数封装、事件驱动编程等核心技能。同时学会借助AI优化代码,锻炼逻辑思维与问题解决能力,让AI真正成为编程路上的好助手。前三讲我们完成了倒计时器的界面搭建,有了窗口、时间屏和操作按钮,但点击“开始”按钮后时间还不会变化。
这一讲我们将揭秘核心逻辑——编写倒计时函数,实现“开始”按钮触发倒计时的功能。
完成后,点击“开始”,时间标签中的“01:00”会逐秒递减。
第一步:回顾上节课代码。
打开“countdown_timer.py”文件,确保代码包含界面所有元素(主窗口、时间标签、开始/重置按钮)的创建和布局。
家长须知:核心逻辑编写前的回顾,能帮助孩子理清界面元素与逻辑功能的关联,强化“界面+逻辑”的编程思维,契合程序开发的核心流程。
第二步:定义倒计时初始秒数。
在主窗口创建之后,添加代码“total_seconds = 60”,我们的倒计时总时长为60秒,用变量存储方便后续修改。
第三步:编写时间转换函数。
定义函数将秒数转换为“分:秒”格式:
“def format_time(seconds): minutes = seconds // 60; seconds = seconds % 60; return f"{minutes:02d}:{seconds:02d}"”。
//是整数除法,%是取余,f-string格式化让时间显示为两位数(如01:00而非1:0)。
家长须知:时间转换函数的编写能锻炼孩子的算法思维(整除与取余运算)和数据格式化能力,理解“原始数据→可视化数据”的转换逻辑。
第四步:编写核心倒计时函数。
定义函数“def countdown()”。
global声明全局变量,config修改标签文本,after(1000, countdown)实现1秒后调用自身,形成循环倒计时。
第五步:给“开始”按钮绑定函数。
修改“开始”按钮的创建代码:“start_btn = tk.Button(root, text="开始", command=countdown)”,command参数指定按钮点击后触发的函数。
第六步:测试运行。
点击“开始”按钮,时间标签中的“01:00”会逐秒递减(00:59、00:58...),恭喜你实现了倒计时核心功能!
第七步:排查问题。
如果时间不变化,检查函数定义是否正确、按钮是否绑定command参数、after方法的参数是否为1000(毫秒)。
家长须知:排查逻辑问题的过程,能锻炼孩子的调试能力和逻辑推理能力,培养“分步验证、逐步排查”的科学思维。
# 导入tkinter库,简化为tkimport tkinter as tk# 创建主窗口对象root = tk.Tk()root.title("简单倒计时器")root.geometry("300x150")# 倒计时初始秒数(60秒)total_seconds = 60# 时间转换函数:将秒数转为"分:秒"格式(两位数显示)def format_time(seconds): minutes = seconds // 60 # 计算分钟(整数除法) seconds = seconds % 60 # 计算剩余秒数(取余) return f"{minutes:02d}:{seconds:02d}" # 格式化显示# 核心倒计时函数def countdown(): global total_seconds # 声明使用全局变量 if total_seconds > 0: # 当秒数大于0时 total_seconds -= 1 # 秒数减1 # 更新时间标签文本 time_label.config(text=f"倒计时: {format_time(total_seconds)}") # 1000毫秒(1秒)后调用自身,实现循环倒计时 root.after(1000, countdown)# 创建时间标签,设置文本和字体样式time_label = tk.Label(root, text=f"倒计时: {format_time(total_seconds)}", font=("Arial", 24))time_label.pack(pady=30)# 创建按钮容器btn_frame = tk.Frame(root)btn_frame.pack(side=tk.BOTTOM, pady=10)# 创建开始按钮(绑定倒计时函数)和重置按钮start_btn = tk.Button(btn_frame, text="开始", command=countdown)reset_btn = tk.Button(btn_frame, text="重置")# 按钮网格布局start_btn.grid(row=0, column=0, padx=20)reset_btn.grid(row=0, column=1, padx=20)# 运行窗口循环root.mainloop()
当前倒计时只能一直递减,无法暂停,且重复点击“开始”按钮会加快倒计时速度。
可以请AI帮忙优化:
一是解决重复点击“开始”加速的问题;
二是让倒计时支持暂停功能,让程序更稳定、更实用。
“我用Python tkinter制作倒计时器,核心倒计时函数是:def countdown()。
现在重复点击开始按钮会加速倒计时,想添加暂停功能,点击开始后按钮变为暂停,点击暂停可停止倒计时。
请帮我修改代码,解决这两个问题,并解释修改逻辑。”
同学们,核心逻辑的实现是不是很有成就感!
遇到逻辑漏洞(比如重复点击加速)、想添加新功能(比如暂停),都可以找AI帮忙。
AI能帮你分析问题、优化代码,但一定要先自己思考“为什么会有问题”“我想实现什么效果”,再向AI提问,这样才能真正提升自己的编程能力,让AI成为你的得力助手~
这一节课我们不仅学会了函数封装、全局变量使用、time.after()方法的应用,更重要的是掌握了倒计时的核心算法逻辑,理解了“事件驱动+循环调用”的编程模式。
通过将秒数转换为“分:秒”格式,我们锻炼了数据处理能力;
通过编写核心倒计时函数,我们强化了逻辑推理和问题解决能力。
下一节课,我们将完善“暂停/继续”和“重置”功能,让倒计时器的交互更流畅~
数程思维派|专业创造未来
秦老师,211高校计算机专业全日制硕士研究生学历,学信网可查。蓝桥STEM优秀指导教师(证书编号:STEMA160529),拥有多年青少年科技教育一线教学经验,学生曾多次在各类权威科技竞赛中斩获优异成绩。覆盖Scratch/Python/C++编程学习全阶段,接轨CCF/CIE考级竞赛,从基础入门到赛事冲刺,为孩子提供持续、系统的专业指导。线下教学基地:南京市江宁区上元大街恒通大厦(江宁万达旁,地铁5号线直达)
数程小达人、AI驾驭者、赛考科学家,拒绝千篇一律的统一课程,对孩子因材施教,让孩子学有所得。若需了解课程详情,可通过微信扫描二维码添加秦老师,添加成功后即可立即享受价值超千元的课程专属优惠。
👇