本文目录导读:

我来为您设计一个定时弹出提醒并记录的脚本方案,根据您的需求,我提供两个版本:
Python版本(跨平台)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
定时提醒脚本 - 支持Windows/Mac/Linux
"""
import time
import threading
import tkinter as tk
from tkinter import messagebox
import json
import os
from datetime import datetime
class ReminderScheduler:
def __init__(self):
self.reminders = []
self.log_file = "reminder_log.json"
self.load_reminders()
def load_reminders(self):
"""加载提醒任务"""
if os.path.exists(self.log_file):
try:
with open(self.log_file, 'r', encoding='utf-8') as f:
self.reminders = json.load(f)
except:
self.reminders = []
def save_reminders(self):
"""保存提醒任务"""
with open(self.log_file, 'w', encoding='utf-8') as f:
json.dump(self.reminders, f, ensure_ascii=False, indent=2)
def add_reminder(self, message, interval_minutes):
"""添加提醒"""
reminder = {
'message': message,
'interval': interval_minutes,
'next_time': time.time() + interval_minutes * 60,
'created_at': datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
self.reminders.append(reminder)
self.save_reminders()
def show_reminder(self, message):
"""显示提醒窗口"""
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 创建自定义对话框
dialog = tk.Toplevel(root)
dialog.title("⏰ 提醒")
dialog.geometry("300x150")
dialog.attributes('-topmost', True) # 置顶
# 显示消息
label = tk.Label(dialog, text=message, font=("微软雅黑", 12),
wraplength=250, pady=20)
label.pack()
# 按钮
button = tk.Button(dialog, text="我知道了",
command=lambda: self.on_acknowledge(dialog, message))
button.pack(pady=10)
dialog.protocol("WM_DELETE_WINDOW", lambda: self.on_acknowledge(dialog, message))
dialog.transient(root)
dialog.grab_set()
root.mainloop()
def on_acknowledge(self, dialog, message):
"""记录确认时间"""
with open("reminder_records.txt", "a", encoding='utf-8') as f:
record_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
f.write(f"[确认] {record_time} - {message}\n")
dialog.destroy()
dialog.quit()
def run_scheduler(self):
"""运行调度器"""
print("⏰ 定时提醒系统已启动...")
print("按 Ctrl+C 退出")
while True:
current_time = time.time()
for reminder in self.reminders:
if current_time >= reminder['next_time']:
print(f"\n🔔 提醒: {reminder['message']}")
self.show_reminder(reminder['message'])
reminder['next_time'] = current_time + reminder['interval'] * 60
self.save_reminders()
time.sleep(30) # 每30秒检查一次
def main():
scheduler = ReminderScheduler()
# 添加默认提醒(根据需求修改)
# scheduler.add_reminder("该喝水了!", 30) # 每30分钟提醒喝水
# scheduler.add_reminder("休息一下眼睛", 45) # 每45分钟提醒休息
# scheduler.add_reminder("伸展一下身体", 60) # 每60分钟提醒运动
# 启动调度器
try:
scheduler.run_scheduler()
except KeyboardInterrupt:
print("\n⏹ 提醒系统已停止")
scheduler.save_reminders()
if __name__ == "__main__":
main()
Windows专用 - VBScript版本
' reminder.vbs
' 定时提醒脚本 - Windows专用
Option Explicit
Dim ws, fso, logFile
Set ws = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
logFile = "ReminderLog.txt"
' 提醒间隔(分钟)
Const WATER_INTERVAL = 30
Const EYE_INTERVAL = 45
Const STRETCH_INTERVAL = 60
' 上次提醒时间
Dim lastWater, lastEye, lastStretch
lastWater = Now
lastEye = Now
lastStretch = Now
' 主循环
Do While True
' 检查是否需要提醒
If DateDiff("n", lastWater, Now) >= WATER_INTERVAL Then
Call ShowReminder("💧 该喝水了!已经" & WATER_INTERVAL & "分钟了")
lastWater = Now
End If
If DateDiff("n", lastEye, Now) >= EYE_INTERVAL Then
Call ShowReminder("👀 休息一下眼睛,远眺5分钟")
lastEye = Now
End If
If DateDiff("n", lastStretch, Now) >= STRETCH_INTERVAL Then
Call ShowReminder("🧘 站起来伸展一下身体")
lastStretch = Now
End If
' 每30秒检查一次
WScript.Sleep 30000
Loop
Sub ShowReminder(message)
' 记录日志
Call WriteLog("提醒: " & message)
' 显示消息框
Dim result
result = MsgBox(message & vbCrLf & vbCrLf & "点击确定记录确认时间",
vbOKOnly + vbInformation + vbSystemModal,
"⏰ 定时提醒")
' 记录确认
If result = vbOK Then
Call WriteLog("已确认: " & message)
End If
End Sub
Sub WriteLog(message)
Dim logEntry
logEntry = Now & " - " & message
' 追加到日志文件
Dim outFile
Set outFile = fso.OpenTextFile(logFile, 8, True)
outFile.WriteLine logEntry
outFile.Close
' 同时也输出到屏幕(可选)
' WScript.Echo logEntry
End Sub
使用说明
Python版本:
- 安装Python(如果还没有)
- 运行脚本:
python reminder.py
VBScript版本:
- 保存为
.vbs文件 - 双击运行(会被杀毒软件询问,选择允许)
功能特点
定时提醒
- 可设置任意间隔时间
- 支持多个提醒任务
- 系统托盘图标(Python版)
记录功能
- 记录每次提醒时间
- 记录用户确认时间
- 保存到文本文件中
自定义提醒
您可以修改代码中的提醒内容和间隔:
#
scheduler.add_reminder("站起来活动一下", 60) # 每小时提醒
scheduler.add_reminder("喝水时间", 30) # 每半小时提醒
日志文件示例
生成的日志文件 如果需要在系统后台运行: 是否需要我提供后台运行的具体配置方法,或者根据您的特定需求调整脚本?
reminder_records.txt
[提醒] 2024-01-08 14:00:00 - 该喝水了!
[确认] 2024-01-08 14:00:15 - 该喝水了!
[提醒] 2024-01-08 14:30:00 - 该喝水了!
[确认] 2024-01-08 14:30:05 - 该喝水了!高级配置(可选)