ExampleΒΆ

You will need to have an image named icon.png in the same folder as the code below. You can use this one for instance.

import trayicon
import os
import tkinter as tk

icon_path = os.path.join(os.path.dirname(__file__), 'icon.png')


def make_icon(gui):

    def cmd1():
        print('Item 1')

    def cmd2():
        print('Item 2: %s' % icon.menu.get_item_value('Item 2'))

    if gui == 'qt':
        module = trayicon.qticon
    elif gui == 'gtk':
        module = trayicon.gtkicon
    else:
        module = trayicon.tkicon

    icon = module.TrayIcon('icon.png', fallback_icon_path=icon_path)

    # command
    icon.menu.add_command(label='Item 1', command=cmd1)
    # checkbutton
    icon.menu.add_checkbutton(label='Item 2', command=cmd2)
    # submenu
    submenu = module.SubMenu(parent=icon.menu)
    submenu.add_command('Subitem 1')
    submenu.add_command('Subitem 2')

    icon.menu.add_cascade(label='Submenu', menu=submenu)
    # separator
    icon.menu.add_separator()

    icon.menu.add_command(label='Quit', command=root.destroy)

    # start icon event loop
    icon.loop(root)


toolkits = trayicon.get_available_gui_toolkits()

root = tk.Tk()

for gui in toolkits:
    tk.Button(root, text=gui, command=lambda g=gui: make_icon(g)).pack()

root.mainloop()