本文目录导读:

我来帮你编写一个闹钟提醒脚本,根据你的需求,我提供几个不同复杂程度的实现方案:
简单命令行闹钟(Python)
import time
import winsound # Windows系统
# import os # macOS/Linux: os.system('say "时间到了"')
def simple_alarm(target_time, message="时间到了!"):
"""简单的命令行闹钟"""
print(f"闹钟已设置,将在 {target_time} 提醒")
print(f"提醒内容: {message}")
while True:
current_time = time.strftime("%H:%M")
if current_time == target_time:
print(f"\n⏰ 时间到!{message}")
# Windows蜂鸣声
for _ in range(3):
winsound.Beep(1000, 500) # 频率1000Hz,持续500ms
# macOS: os.system('say "时间到了"')
break
time.sleep(30) # 每30秒检查一次
# 使用示例
if __name__ == "__main__":
# 设置闹钟时间(24小时制)
simple_alarm("14:30", "该开会了!")
功能完整的闹钟程序
import time
import datetime
import winsound
import threading
from plyer import notification # 需要安装: pip install plyer
class AlarmClock:
def __init__(self):
self.alarms = []
self.running = True
def add_alarm(self, hour, minute, message="闹钟提醒", repeat=False):
"""添加闹钟"""
alarm_time = f"{hour:02d}:{minute:02d}"
self.alarms.append({
'time': alarm_time,
'message': message,
'repeat': repeat,
'triggered': False
})
print(f"✅ 闹钟已设置: {alarm_time} - {message}")
def check_alarm(self):
"""检查闹钟是否到时间"""
current_time = time.strftime("%H:%M")
for alarm in self.alarms:
if alarm['time'] == current_time and not alarm['triggered']:
self.trigger_alarm(alarm)
if alarm['repeat']:
alarm['triggered'] = False # 重复闹钟重置
else:
alarm['triggered'] = True
def trigger_alarm(self, alarm):
"""触发闹钟"""
print(f"\n⏰ {alarm['message']}")
# 播放声音
for _ in range(5):
winsound.Beep(800, 300)
time.sleep(0.1)
# 桌面通知
try:
notification.notify(
title="⏰ 闹钟提醒",
message=alarm['message'],
timeout=10
)
except:
pass # 如果不支持通知,继续执行
def run(self):
"""运行闹钟"""
print("🕐 闹钟程序启动中...")
print("按 Ctrl+C 停止程序\n")
try:
while self.running:
self.check_alarm()
time.sleep(30) # 每30秒检查一次
except KeyboardInterrupt:
print("\n👋 闹钟程序已停止")
self.running = False
# 使用示例
if __name__ == "__main__":
clock = AlarmClock()
# 添加闹钟
clock.add_alarm(14, 30, "下午会议", repeat=True) # 每天下午2:30
clock.add_alarm(9, 0, "开始工作", repeat=True) # 每天早上9:00
clock.add_alarm(18, 0, "下班时间", repeat=True) # 每天下午6:00
# 启动闹钟
clock.run()
高级GUI闹钟(使用tkinter)
import tkinter as tk
from tkinter import ttk, messagebox
import time
import threading
import winsound
from datetime import datetime
class AlarmClockGUI:
def __init__(self):
self.window = tk.Tk()
self.window.title("智能闹钟")
self.window.geometry("400x500")
self.alarms = []
self.setup_ui()
self.start_clock()
def setup_ui(self):
"""设置界面"""
# 标题
title = tk.Label(self.window, text="⏰ 智能闹钟",
font=("Arial", 20, "bold"))
title.pack(pady=10)
# 当前时间
self.time_label = tk.Label(self.window, text="",
font=("Arial", 16))
self.time_label.pack()
# 闹钟设置区域
frame = tk.Frame(self.window)
frame.pack(pady=20)
# 时间选择
tk.Label(frame, text="设置闹钟时间:").grid(row=0, column=0, pady=5)
self.hour_var = tk.StringVar(value="08")
self.minute_var = tk.StringVar(value="00")
hours = [f"{i:02d}" for i in range(24)]
minutes = [f"{i:02d}" for i in range(60)]
hour_combo = ttk.Combobox(frame, textvariable=self.hour_var,
values=hours, width=5)
hour_combo.grid(row=0, column=1)
tk.Label(frame, text=":").grid(row=0, column=2)
minute_combo = ttk.Combobox(frame, textvariable=self.minute_var,
values=minutes, width=5)
minute_combo.grid(row=0, column=3)
# 提醒内容
tk.Label(frame, text="提醒内容:").grid(row=1, column=0, pady=10)
self.message_entry = tk.Entry(frame, width=30)
self.message_entry.grid(row=1, column=1, columnspan=3)
self.message_entry.insert(0, "时间到了!")
# 添加闹钟按钮
add_btn = tk.Button(frame, text="添加闹钟",
command=self.add_alarm,
bg="#4CAF50", fg="white",
width=20)
add_btn.grid(row=2, column=0, columnspan=4, pady=10)
# 闹钟列表
tk.Label(self.window, text="已设置的闹钟:",
font=("Arial", 12, "bold")).pack()
self.listbox = tk.Listbox(self.window, width=50, height=10)
self.listbox.pack(pady=10)
# 删除闹钟按钮
del_btn = tk.Button(self.window, text="删除选中闹钟",
command=self.delete_alarm,
bg="#f44336", fg="white")
del_btn.pack()
def start_clock(self):
"""更新当前时间"""
def update():
current_time = time.strftime("%H:%M:%S")
self.time_label.config(text=f"当前时间: {current_time}")
self.window.after(1000, update)
# 检查闹钟
self.check_alarms()
update()
def add_alarm(self):
"""添加闹钟"""
hour = self.hour_var.get()
minute = self.minute_var.get()
message = self.message_entry.get()
alarm_time = f"{hour}:{minute}"
if alarm_time not in self.alarms:
self.alarms.append(alarm_time)
self.listbox.insert(tk.END, f"{alarm_time} - {message}")
messagebox.showinfo("成功", f"闹钟已设置: {alarm_time}")
else:
messagebox.showwarning("警告", "该时间已有闹钟")
def delete_alarm(self):
"""删除闹钟"""
selection = self.listbox.curselection()
if selection:
index = selection[0]
self.alarms.pop(index)
self.listbox.delete(index)
def check_alarms(self):
"""检查闹钟"""
current_time = time.strftime("%H:%M")
if current_time in self.alarms:
# 播放闹钟声音
for _ in range(3):
winsound.Beep(1000, 500)
time.sleep(0.2)
# 显示提醒
messagebox.showinfo("⏰ 闹钟提醒", f"时间到!{current_time}")
# 移除已触发的闹钟
self.alarms.remove(current_time)
# 更新列表
self.listbox.delete(0, tk.END)
for alarm in self.alarms:
self.listbox.insert(tk.END, alarm)
def run(self):
"""运行程序"""
self.window.mainloop()
# 运行GUI闹钟
if __name__ == "__main__":
app = AlarmClockGUI()
app.run()
安装和使用说明
安装依赖
# 对于基础版本 pip install plyer # 桌面通知支持 # 如果需要完整功能 pip install tkinter # 通常Python自带
运行脚本
python alarm_clock.py
定时任务方式(无需运行程序)
Windows任务计划程序
@echo off :: 创建提醒.bat msg * "时间到了!会议即将开始!" start "" "ms-settings:alarms"
Linux crontab
# 编辑crontab crontab -e # 每天早上9点提醒 0 9 * * * /usr/bin/notify-send "提醒" "开始工作!" # 下午2:30提醒 30 14 * * * /usr/bin/notify-send "提醒" "下午会议!"
选择适合你需求的版本:
- 简单版本:适合快速测试
- 功能完整版:适合日常使用
- GUI版本:可视化操作更方便
- 系统定时任务:无需运行程序
需要我帮你调整功能或添加特定特性吗?