如何编写闹钟提醒脚本

wen 实用脚本 26

本文目录导读:

如何编写闹钟提醒脚本

  1. 简单命令行闹钟(Python)
  2. 功能完整的闹钟程序
  3. 高级GUI闹钟(使用tkinter)
  4. 安装和使用说明
  5. 定时任务方式(无需运行程序)

我来帮你编写一个闹钟提醒脚本,根据你的需求,我提供几个不同复杂程度的实现方案:

简单命令行闹钟(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版本:可视化操作更方便
  • 系统定时任务:无需运行程序

需要我帮你调整功能或添加特定特性吗?

抱歉,评论功能暂时关闭!