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

如何在pystray中创建菜单分隔符?实现遇阻求助

在pystray中正确创建菜单分隔符的方法

你遇到的问题根源在于:你手动创建的MenuItem("- - - -", None)和pystray内部定义的分隔符不是同一个对象实例,所以库不会将其识别为分隔符,而是当作普通文本菜单项处理。

查看Menu类源码就能发现,库已经预定义了一个专门的分隔符实例:

class Menu(object):
    #: A representation of a simple separator
    SEPARATOR = MenuItem('- - - -', None)
    # ...其他代码

正确的做法是直接使用这个预定义的SEPARATOR,而不是自己重新创建MenuItem。修改你的最小复现代码如下:

import pystray
from PIL import Image

def item1_action(icon, item):
    print("Item 1 clicked")
def item2_action(icon, item):
    print("Item 2 clicked")
def quit_action(icon, item):
    print("Quit clicked")

item1 = pystray.MenuItem("Item 1", item1_action)
item2 = pystray.MenuItem("Item 2", item2_action)
# 直接使用库预定义的分隔符实例
sep = pystray.Menu.SEPARATOR
quit_item = pystray.MenuItem("Quit", quit_action)
menu = (item1, item2, sep, quit_item)

image = Image.open('icon.png')
icon = pystray.Icon("test", image, "test", menu)
icon.run()

这样运行后,菜单中就会显示正常的分隔线,而不是文本为- - - -的菜单项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:36:08