提问人:aurorathorn 提问时间:10/5/2023 最后编辑:Andreas Violarisaurorathorn 更新时间:10/5/2023 访问量:90
如何在 pystray 中创建菜单分隔符
How to create a menu separator in pystray
问:
我正在尝试创建一个 pystray 菜单分隔符,但我很难这样做。我已经在 SO 及其文档中搜索了这里,我发现它们非常混乱和无用,我什至试图阅读该类:Menu
class Menu(object):
"""A description of a menu.
A menu description is immutable.
It is created with a sequence of :class:`Menu.Item` instances, or a single
callable which must return a generator for the menu items.
First, non-visible menu items are removed from the list, then any instances
of :attr:`SEPARATOR` occurring at the head or tail of the item list are
removed, and any consecutive separators are reduced to one.
"""
#: A representation of a simple separator
SEPARATOR = MenuItem('- - - -', None)
def __init__(self, *items):
self._items = tuple(items)
我在其中找到了以下表示形式,我是这样使用的:
sep = pystray.MenuItem("- - - -", None)
但是,它没有创建分隔符,而是创建了一个包含以下文本的菜单项:- - - -
您可以在下面找到一个最小的可重现示例:
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.MenuItem("- - - -", None)
quit_item = pystray.MenuItem("Quit", quit_action)
menu = (item1, item2,s, quit_item)
image = Image.open('icon.png')
icon = pystray.Icon("test", image, "test", menu)
icon.run()
答:
5赞
Andreas Violaris
10/5/2023
#1
您已正确标识指示使用分隔符的点。但是,您应该专门使用该属性而不是其赋值,因为有人可能实际上想要创建一个包含四个连字符的菜单项,并且 pystray 违背他们的意愿自动将其转换为分隔符是不合适的。SEPARATOR
话虽如此,您需要替换它:
sep = pystray.MenuItem("- - - -", None)
有了这个:
sep = pystray.Menu.SEPARATOR
评论
0赞
Andreas Violaris
10/5/2023
@OneMadGypsy我实际上已经使用过这个库几次了,所以我有一点领先优势。:D
1赞
aurorathorn
10/5/2023
哦。。。这么近...非常感谢!!!!
0赞
Andreas Violaris
10/5/2023
@aurorathorn 不客气!
评论