Native Menu Management

Pytron provides a high-level abstraction for managing native system menus and tray icons. This allows you to build applications that feel like they belong on the user's desktop.

1. Application Menu Bar

The MenuBar class allows you to define a standard application menu (File, Edit, etc.) that appears at the top of your window on Windows and Linux, or in the global system bar on macOS.

python
from pytron import App, Menu, MenuBar

app = App()

# Create a Menu Bar
menubar = MenuBar()

# File Menu
file_menu = menubar.add_menu(Menu("File"))
file_menu.add_item("New Project", callback=lambda: print("New!"), shortcut="Ctrl+N")
file_menu.add_item("Open...", callback=lambda: app.dialog_open_file())
file_menu.add_separator()
file_menu.add_item("Exit", callback=app.quit, shortcut="Alt+F4")

# Tools Submenu
tools_menu = menubar.add_menu(Menu("Tools"))
settings_sub = tools_menu.add_submenu("Settings")
settings_sub.add_item("General")
settings_sub.add_item("Advanced")

# Attach to App
app.set_menubar(menubar)

app.run()

2. System Tray (Notification Area)

Tray icons are essential for background tasks, quick launchers, or applications that need to stay alive after the main window is closed.

  • Persistent Presence: Use "close_to_tray": true in settings.json to keep the app running.
  • Custom Icons: Support for .ico, .png, or .template (macOS).
python
# Manual setup
tray = app.setup_tray(title="My App", icon="assets/tray.ico")
tray.add_item("Sync Now", callback=do_sync)
tray.add_separator()
tray.add_quit_item() # Adds standard "Quit" logic

# Standard template (Show/Hide/Quit)
app.setup_tray_standard()

3. Global Shortcuts

Shortcuts registered via the App class are Global—meaning they trigger even when your window is minimized or out of focus.

python
@app.shortcut("Ctrl+Shift+Space")
def quick_action():
    app.show()
    app.emit("start-search")

4. Platform Specifics

FeatureWindowsmacOSLinux
Menu BarWindow TopGlobal System BarWindow/Global
Tray MenuWin32 APINSStatusItemAppIndicator
ShortcutsRegisterHotKeyQuartz Event TapsX11/Wayland Hooks