Я пытаюсь создать разделитель меню 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()






Вы правильно определили точку, в которой указано использование разделителя. Однако вам следует специально использовать атрибут SEPARATOR вместо присвоенного ему значения, потому что кто-то действительно может захотеть создать пункт меню с четырьмя дефисами, и для pystray было бы нецелесообразно автоматически преобразовывать его в разделитель против его воли.
При этом вам необходимо заменить это:
sep = pystray.MenuItem("- - - -", None)
с этим:
sep = pystray.Menu.SEPARATOR
Оооо... так близко... спасибо тебе огромное!!!!
@aurorathorn Всегда пожалуйста!
@OneMadGypsy Я действительно использовал эту библиотеку несколько раз, так что у меня было некоторое преимущество. :D