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": trueinsettings.jsonto 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
| Feature | Windows | macOS | Linux |
|---|---|---|---|
| Menu Bar | Window Top | Global System Bar | Window/Global |
| Tray Menu | Win32 API | NSStatusItem | AppIndicator |
| Shortcuts | RegisterHotKey | Quartz Event Taps | X11/Wayland Hooks |