Table Of Contents
System Tray¶
This module provides system tray functionality for Kivy applications using the core.system_tray components.
Classes Overview¶
The system tray implementation consists of three main classes:
Basic Usage¶
Creating a Simple System Tray¶
from kivy.core.system_tray import TrayIcon, TrayMenu, TrayMenuItem
# Approach 1: Using internal menu
system_tray = TrayIcon()
system_tray.create()
main_menu = system_tray.menu
main_menu.add_item(TrayMenuItem(label="File"))
main_menu.add_item(TrayMenuItem(label="Exit"))
# Approach 2: External menu creation
main_menu = TrayMenu()
main_menu.add_item(TrayMenuItem(label="File"))
main_menu.add_item(TrayMenuItem(label="Exit"))
system_tray = TrayIcon(menu=main_menu).create()
Advanced Features¶
Classes Reference¶
TrayIcon¶
- class kivy.core.system_tray.TrayIcon(menu=None)¶
Main system tray icon manager.
- Parameters:
menu (TrayMenu or None) – Optional TrayMenu instance
- create()¶
Initialize and display the system tray icon.
- Returns:
TrayIcon instance for method chaining
- Return type:
Internal menu reference. Available after create() is called.
- Type:
Dynamic Properties¶
The components are designed to be fully dynamic. You can change properties on the fly and the system tray will update instantly:
# Change tray icon image and tooltip
system_tray.icon = "new_icon.png"
system_tray.tooltip = "Syncing (45%)"
# Change a specific menu item
meu_botao.label = "Cancel Sync"
meu_botao.enabled = False
# Toggle a checkbox item
meu_checkbox.checked = False
Initialization with Lists¶
You can directly pass a python list of TrayMenuItem objects when creating a TrayIcon or a TrayMenu, and they will automatically be parsed:
system_tray = TrayIcon(
icon_path="icon.png",
menu=[
TrayMenuItem("Enable VPN", type="checkbox", checked=True),
TrayMenuItem(type="separator"),
TrayMenuItem("Exit", callback=lambda: exit())
]
).create()
Best Practices¶
Menu Structure: Keep menus simple and intuitive
Separators: Use separators to group related items
Method Chaining: TrayIcon.create() returns self for chaining
Memory Management: Store tray reference to prevent garbage collection
Examples¶
Complete Application Example¶
from kivy.app import App
from kivy.uix.label import Label
from kivy.core.system_tray import TrayIcon, TrayMenu, TrayMenuItem
class MyApp(App):
def build(self):
# Create system tray
self.setup_tray()
return Label(text="App with System Tray")
def setup_tray(self):
main_menu = TrayMenu()
main_menu.add_item(TrayMenuItem(label="Show App"))
main_menu.add_item(TrayMenuItem(type="separator"))
main_menu.add_item(TrayMenuItem(label="Exit"))
self.system_tray = TrayIcon(menu=main_menu).create()
MyApp().run()
See Also¶
Kivy Documentation: https://kivy.org/doc/stable/
System Tray Guidelines: Platform-specific implementation notes