Pytigon's desktop client is built on wxPython, giving applications a true native look-and-feel on Windows, Linux, and macOS. The same application logic that powers your web interface renders through wxPython controls — no separate codebase needed.
The desktop client is not a separate application. It's a Python process that:
This architecture means the desktop client automatically benefits from every update to the web application. There's no "desktop build" — just a different rendering target.
The wxPython client (pytigon/pytigon/ptig.py) provides:
The desktop client's killer feature is hybrid mode — native controls and web content sharing the same window. For example:
Communication between native and web components happens through Pytigon's JavaScript bridge, allowing JavaScript to call native functions and vice versa.
When rendering content for wxPython, Pytigon uses schhtml with a wxPython device context (wxdc). This converts .ihtml templates directly into wxPython widget hierarchies:
.ihtml Template → schhtml Parser → wxPython Widget Tree → Display
The wxPython renderer supports: - Labels, text inputs, dropdown selects - Tables with sorting, column resizing, and inline editing - Image display - Form layout with sizers - Tab panels and notebooks - Dialog windows
Pytigon defines custom control tags for desktop-specific widgets:
[wx_button label="Click me" action="my_action"]
[wx_listbox name="items" source="my_view"]
[wx_treectrl name="hierarchy"]
See Control tags for the complete reference.
The desktop client supports a plugin system for extending native functionality:
See Plugins for the plugin API.
| Platform | wxPython Support | Notes |
|---|---|---|
| Linux | Full | Primary development platform |
| Windows | Full | Installer (.exe) available |
| macOS | Full | Limited testing |
| Android | Kivy-based | Separate client via Kivy with embedded browser |
| iOS | Not supported | Use web browser instead |