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

Windows任务计划程序与pystray托盘图标显示冲突问题

Windows 11下Python托盘脚本通过任务计划启动不显示图标问题解决

问题描述

我编写了一个Python脚本,运行时会在Windows 11右下角生成托盘图标,代码片段如下:

some code
...

image = PIL.Image.open(r"D:\payDisplay\images\pound_icon.png")

icon = pystray.Icon("Pay", image, menu=pystray.Menu(
    pystray.MenuItem("Update", on_clicked)
))

on_clicked(icon)

log.write(f'Finished timetables sorting.\n')
log.close()

icon.run()

希望该脚本在Windows登录时后台启动,但遇到以下问题:

  • 通过CMD运行脚本时,托盘正常显示且功能正常;
  • 通过任务计划程序运行时,进程在后台运行但托盘不显示,icon.run()之前的代码均已执行,且无任何报错(已用try-except捕获异常并记录日志)。

任务计划程序配置信息:

  • 程序/脚本:C:\Users\yagni\AppData\Local\Programs\Python\Python311\pythonw.exe
  • 添加参数:taskbarPay.pyw
  • 起始于:D:\payDisplay

解决办法

1. 调整任务计划安全选项

  • 打开任务计划程序,找到目标任务右键选择「属性」;
  • 切换到「常规」标签页,勾选「不管用户是否登录都要运行」,同时取消勾选「不存储密码」;
  • 切换到「设置」标签页,取消所有任务运行时长限制类的勾选选项。

2. 绑定用户会话桌面权限

  • 进入任务计划的「操作」标签页,编辑现有操作;
  • 切换到「条件」标签页,取消勾选「只有在计算机使用交流电源时才启动此任务」(笔记本用户需注意);
  • 切换到「设置」标签页,勾选「如果任务已经在运行,则不要启动新实例」,避免多进程冲突。

3. 修正Python运行上下文

  • 临时将程序/脚本替换为python.exe测试,确认托盘能正常显示后再改回pythonw.exe;
  • 确保脚本中所有文件路径(如图标路径)均使用绝对路径,避免任务计划起始目录导致的路径解析问题。

4. 强制pystray图标显示

  • 修改pystray初始化代码,添加显式可见性参数:
    icon = pystray.Icon("Pay", image, menu=pystray.Menu(
        pystray.MenuItem("Update", on_clicked)
    ), visible=True)
    
  • 或者在icon.run()前强制设置可见性:
    icon.visible = True
    icon.run()
    

5. 检查系统通知区域设置

  • 右键任务栏选择「任务栏设置」,找到「通知区域」的「选择哪些图标显示在任务栏上」;
  • 确保名为「Pay」的托盘图标被设置为「显示图标和通知」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:17:44