本文目录导读:

- 🌟 难度 1:极简入门版(Python + 系统通知)
- 🚀 难度 2:实用功能版(Python + 轻量GUI + 秒杀)
- 💻 难度 3:极客版(Bash + Linux/Mac 终端弹窗)
- 📢 补充:最省事的入门方法(不需要写代码)
- 💡 总结建议
写一个倒计时提醒脚本不难,难度取决于你需要的复杂程度。
核心逻辑只有 3 行代码(计算差值、判断是否到点、提醒),但如果你要加图形界面、多任务、自定义音效,就会稍微复杂一点。
下面我直接给你3个不同难度的现成脚本,你可以直接复制使用。
🌟 难度 1:极简入门版(Python + 系统通知)
这个版本适合Windows 或 Linux,只需要输入分钟数,到时间后弹一个桌面通知。
import time
import sys
import os
def countdown(minutes):
total_seconds = int(minutes * 60)
print(f"倒计时开始:{minutes} 分钟")
time.sleep(total_seconds) # 核心:直接睡过去
# 提醒部分(跨平台粗放版)
if sys.platform == "win32":
# Windows 弹窗
import ctypes
ctypes.windll.user32.MessageBoxW(0, "时间到!该去做事了!", "倒计时提醒", 0x40)
else:
# Linux / Mac 终端打印 + 响铃(\a是终端BEL字符)
print("\a时间到!该去做事了!")
# 使用示例:倒计时 0.1 分钟(6秒)方便测试
countdown(0.1)
🚀 难度 2:实用功能版(Python + 轻量GUI + 秒杀)
这个版本带一个简单的图形界面,可以输入小时、分钟、秒,并支持多个提醒同时挂机。
import threading
import time
import tkinter as tk
from tkinter import messagebox
import winsound
def start_timer():
# 检查当前是否已有定时器在跑(防重复点击)
try:
h = int(hour_entry.get())
m = int(minute_entry.get())
s = int(second_entry.get())
except ValueError:
messagebox.showerror("错误", "请输入数字")
return
total = h * 3600 + m * 60 + s
if total <= 0:
return
# 禁用按钮防止重复启动
start_btn.config(state=tk.DISABLED)
threading.Thread(target=run_countdown, args=(total,), daemon=True).start()
def run_countdown(total):
while total > 0:
time.sleep(1)
total -= 1
# 更新GUI标签(线程安全调用)
root.after(0, update_label, total)
# 时间到,播放声音并弹窗
winsound.Beep(1000, 500) # Windows声音,Linux/Mac可以去掉这行或换成打印响铃
messagebox.showinfo("提醒", "时间到!")
root.after(0, reset_ui)
def update_label(t):
# 动态显示剩余时间
hh = t // 3600
mm = (t % 3600) // 60
ss = t % 60
label_var.set(f"剩余时间:{hh:02d}:{mm:02d}:{ss:02d}")
def reset_ui():
label_var.set("倒计时 00:00:00")
start_btn.config(state=tk.NORMAL)
# ---------- GUI 部分 ----------
root = tk.Tk()"倒计时提醒 v2")
root.geometry("300x150")
label_var = tk.StringVar()
label_var.set("倒计时 00:00:00")
tk.Label(root, textvariable=label_var, font=("Arial", 14)).pack(pady=10)
# 输入框
frame = tk.Frame(root)
frame.pack()
tk.Label(frame, text="时").grid(row=0, column=0)
hour_entry = tk.Entry(frame, width=3)
hour_entry.insert(0, "0")
hour_entry.grid(row=0, column=1)
tk.Label(frame, text="分").grid(row=0, column=2)
minute_entry = tk.Entry(frame, width=3)
minute_entry.insert(0, "0")
minute_entry.grid(row=0, column=3)
tk.Label(frame, text="秒").grid(row=0, column=4)
second_entry = tk.Entry(frame, width=3)
second_entry.insert(0, "10") # 默认10秒,方便测试
second_entry.grid(row=0, column=5)
start_btn = tk.Button(root, text="开始倒计时", command=start_timer)
start_btn.pack(pady=10)
root.mainloop()
💻 难度 3:极客版(Bash + Linux/Mac 终端弹窗)
如果你用 macOS 或 Linux,并且喜欢终端操作,这个脚本零依赖,只需一个文件。
#!/bin/bash
# 使用方法: ./countdown.sh 25 0 (代表25分钟)
# 或者: ./countdown.sh 0 50 (代表50秒)
if [ $# -ne 2 ]; then
echo "用法: $0 <分钟> <秒>"
exit 1
fi
min=$1
sec=$2
total=$((min * 60 + sec))
echo "倒计时 $min 分 $sec 秒 开始..."
while [ $total -gt 0 ]; do
# 格式化为 MM:SS
mm=$((total / 60))
ss=$((total % 60))
printf "\r时间剩余: %02d:%02d " $mm $ss
sleep 1
total=$((total - 1))
done
echo -e "\n\n⏰ 时间到!"
# 尝试弹出GUI通知(macOS / Linux GTK)
if [ "$(uname)" == "Darwin" ]; then
osascript -e 'display notification "时间到了!" with title "倒计时提醒"'
else
notify-send "倒计时提醒" "时间到了!" 2>/dev/null || echo -e "\a" # 发行版没有notify-send就用响铃
fi
📢 补充:最省事的入门方法(不需要写代码)
- Windows用户:打开记事本,输入以下内容,保存为
reminder.vbs:MsgBox "时间到!", 64, "倒计时提醒"
然后在命令行运行:
cscript reminder.vbs(它会在10秒后弹窗,但如果你要等待30分钟,就得写个循环,不如用Python。)
💡 总结建议
- 如果你需要快速使用,直接用
难度1(Python)或难度3(Bash)。 - 如果你需要带界面的,用
难度2(Tkinter)。 - 如果是生产环境(比如服务器、后台任务),建议用
难度1的核心逻辑 + 发邮件/钉钉机器人通知。
实测:新手写一个符合自己需求的倒计时脚本,大概需要 20分钟 到 2小时,主要时间花在查找 GUI 或者系统通知的 API 上,核心逻辑其实一念之间就懂了。