You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python饮水提醒程序开机自启时不显示通知问题求助

饮水提醒程序开机自启后通知不显示的解决方案

问题分析

终端运行正常但开机自启时通知不显示,核心原因可能是:

  • Windows通知权限未对Python/pythonw.exe开放
  • win10toast库对Python 3.11兼容性不足(该库维护停滞,适配性差)
  • 开机自启程序启动过早,用户会话或通知服务未完全初始化

具体解决方案

1. 检查并开启Windows通知权限

  • 打开Windows设置 → 系统 → 通知和操作
  • 在“获取来自这些发送者的通知”列表中找到Python或pythonw.exe,确保通知权限处于开启状态

2. 替换为兼容性更好的通知库

放弃老旧的win10toast,改用plyer库(跨平台,对新Python版本适配更稳定):

  1. 安装依赖:
pip install plyer
  1. 修改代码(替换通知相关逻辑):
# TODO: 使用相对路径处理.ico和.wav文件
import time
from threading import Thread
from plyer import notification
from playsound import playsound
import os
import shutil

shell_startup_dir = f"C:/Users/{os.getlogin()}/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
project_dir = "C:/Users/Karmakar's PC/Documents/Arpan Karmakar/Python Programming/projects/drink-water-notifier"

# 改用批处理文件实现延迟开机自启
bat_path = os.path.join(shell_startup_dir, "drink_water_notifier.bat")
if not os.path.exists(bat_path):
    with open(bat_path, 'w', encoding='utf-8') as f:
        # 延迟30秒启动,确保用户会话和通知服务初始化完成
        f.write(f'timeout /t 30\npythonw "{os.path.join(project_dir, "main.py")}"')

def playsound_fx():
    playsound(os.path.join(project_dir, "water.wav"))

while True:
    Thread(target=playsound_fx).start()
    notification.notify(
        title="饮水提醒",
        message="男性每日建议摄入约15.5杯(3.7升)液体,女性约11.5杯(2.7升)。",
        app_icon=os.path.join(project_dir, "water.ico"),
        timeout=10
    )
    time.sleep(1800)

3. 调整开机自启的启动时机

直接复制pyw文件到启动目录会导致程序在用户会话未完全加载时启动,通知服务可能尚未就绪。通过批处理延迟启动可以解决这个问题:

  • 创建上述代码中的批处理文件,替代直接复制pyw到启动目录
  • 延迟时间可根据实际情况调整(比如30-60秒)

4. 验证Pythonw.exe的执行环境

确保开机自启时使用的pythonw.exe是你当前的Python 3.11版本:

  • 在批处理文件中指定完整的Pythonw路径,比如:
timeout /t 30
"C:/Python311/pythonw.exe" "C:/Users/Karmakar's PC/Documents/Arpan Karmakar/Python Programming/projects/drink-water-notifier/main.py"

内容的提问来源于stack exchange,提问作者Arpan Karmakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:27:02