User can pass tuple object as menu in constructor of Icon, so the value of menu.setter should support to be tuple object. This can fix the issue that invisible menu item is displayed after updating menu. For example:
import pystray
from PIL import Image
from pystray import MenuItem
User can pass tuple object as menu in constructor of Icon, so the value of menu.setter should support to be tuple object. This can fix the issue that invisible menu item is displayed after updating menu. For example:
import pystray from PIL import Image from pystray import MenuItem
def checked_item(icon, item): icon.menu = ( MenuItem(text='item 2', action=checked_item), MenuItem(text='Invisible item', action=lambda icon, item: print('default action'), default=True, visible=False), )
pystray.Icon( name="icon_name", icon=Image.open(r'icon.png'), title='app_name', menu=( MenuItem(text='item 1', action=checked_item), MenuItem(text='Invisible item', action=lambda icon, item: print('default action'), default=True, visible=False), ) ).run()
you would see that 'Invisible item' displayed in menu.