本文目录导读:

我来为您提供几种实现护眼提示的脚本方案,从简单到复杂:
最简单的桌面提醒(Windows + Python)
# eye_care.py
import time
import ctypes
import sys
def show_reminder():
# Windows弹窗提示
ctypes.windll.user32.MessageBoxW(0,
"该休息啦!看看远方,放松眼睛,活动一下身体~",
"护眼提醒",
0x40) # 0x40 = 感叹号图标
def main():
work_interval = 45 * 60 # 工作45分钟
break_interval = 5 * 60 # 休息5分钟
print("护眼提醒已启动!每45分钟提醒一次")
try:
while True:
time.sleep(work_interval)
show_reminder()
print("休息时间...")
time.sleep(break_interval)
except KeyboardInterrupt:
print("\n护眼提醒已停止")
if __name__ == "__main__":
main()
Linux/macOS 命令行版本
#!/bin/bash
# eye_care.sh
WORK_TIME=2700 # 45分钟
BREAK_TIME=300 # 5分钟
echo "护眼提醒已启动!"
echo "工作时间: $((WORK_TIME/60))分钟"
echo "休息时间: $((BREAK_TIME/60))分钟"
while true; do
sleep $WORK_TIME
# 显示通知(适用于不同系统)
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
notify-send "护眼提醒" "该休息啦!看看远方,活动一下~" -i dialog-warning
elif [[ "$OSTYPE" == "darwin"* ]]; then
osascript -e 'display alert "护眼提醒" message "该休息啦!看看远方,活动一下~"'
fi
echo "$(date +%H:%M) 休息时间!"
sleep $BREAK_TIME
done
增强版:带自定义设置的Python脚本
# eye_care_enhanced.py
import time
import schedule
from plyer import notification
import tkinter as tk
from tkinter import ttk
import threading
class EyeCareApp:
def __init__(self):
self.work_interval = 900 # 默认15分钟(便于测试)
self.break_interval = 300 # 默认5分钟
self.running = False
def show_notification(self, title, message):
"""显示通知"""
try:
# 使用plyer库跨平台通知
notification.notify(
title=title,
message=message,
app_name="护眼助手",
timeout=10
)
except:
print(f"通知: {title} - {message}")
def eye_care_cycle(self):
"""护眼周期"""
while self.running:
self.show_notification("开始工作", "专注工作一段时间吧!")
time.sleep(self.work_interval)
self.show_notification("休息时间", "看看远方,做做眼保健操,活动一下!")
time.sleep(self.break_interval)
def start(self):
"""启动护眼提醒"""
self.running = True
thread = threading.Thread(target=self.eye_care_cycle, daemon=True)
thread.start()
def stop(self):
"""停止护眼提醒"""
self.running = False
def create_gui(self):
"""创建图形界面"""
root = tk.Tk()
root.title("护眼小助手")
root.geometry("300x250")
# 设置工作间隔
ttk.Label(root, text="工作时间(分钟):").pack(pady=5)
work_var = tk.IntVar(value=45)
work_spin = ttk.Spinbox(root, from_=1, to=120, textvariable=work_var)
work_spin.pack(pady=5)
# 设置休息间隔
ttk.Label(root, text="休息时间(分钟):").pack(pady=5)
break_var = tk.IntVar(value=5)
break_spin = ttk.Spinbox(root, from_=1, to=30, textvariable=break_var)
break_spin.pack(pady=5)
# 状态显示
status_label = ttk.Label(root, text="未启动")
status_label.pack(pady=10)
def start_clicked():
self.work_interval = work_var.get() * 60
self.break_interval = break_var.get() * 60
self.start()
status_label.config(text="运行中...")
start_btn.config(state="disabled")
stop_btn.config(state="normal")
def stop_clicked():
self.stop()
status_label.config(text="已停止")
start_btn.config(state="normal")
stop_btn.config(state="disabled")
# 按钮
btn_frame = ttk.Frame(root)
btn_frame.pack(pady=20)
start_btn = ttk.Button(btn_frame, text="开始", command=start_clicked)
start_btn.pack(side="left", padx=5)
stop_btn = ttk.Button(btn_frame, text="停止", command=stop_clicked, state="disabled")
stop_btn.pack(side="left", padx=5)
root.mainloop()
if __name__ == "__main__":
app = EyeCareApp()
app.create_gui()
使用现有工具(推荐)
Windows任务计划程序
# 创建计划任务 schtasks /create /tn "EyeCare" /tr "msg * 该休息啦!" /sc minute /mo 45
macOS launchd
<!-- ~/Library/LaunchAgents/com.eyecare.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.eyecare</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>-e</string>
<string>display alert "护眼提醒" message "该休息啦!"</string>
</array>
<key>StartInterval</key>
<integer>2700</integer>
</dict>
</plist>
安装依赖
# Python方案依赖 pip install plyer schedule # 或者使用通知 pip install notify-py
使用建议
- 推荐间隔:建议每20-30分钟休息,每次休息5分钟
- 多提醒方式:可以结合系统声音、桌面通知、命令行提示等
- 记录功能:可以记录每天的工作和休息时间
- 智能调节:根据时间段调整提醒频率(如午休时间不提醒)
您可以根据需求选择最合适的方案,如有具体需求,我可以为您定制!