Ecosystem & sister projects¶
PyDisplay is the graphics, input-event, and timing backend for the wider PyDevices ecosystem. Anything built on top of it inherits PyDisplay's portability across MicroPython, CircuitPython, and CPython.
LVGL sister projects¶
Three sister projects wire PyDisplay into LVGL — the popular C graphics library — so you can build LVGL applications in pure Python. They use PyDisplay for the display flush, input events, and timing on each runtime:
| Project | Runtime | Role |
|---|---|---|
| lv_micropython_cmod | MicroPython | LVGL bindings; PyDisplay drives display + input. |
| lv_circuitpython_mod | CircuitPython | LVGL bindings backed by PyDisplay. |
| lv_cpython_mod | CPython | LVGL bindings backed by PyDisplay. |
Because all three share PyDisplay as the backend, the same LVGL Python code runs on a microcontroller, on the desktop, and — see below — in a notebook.
Develop LVGL apps in Jupyter Notebook¶
With the CPython backend you can build and iterate on an LVGL UI interactively in a Jupyter Notebook: run a cell to create widgets, run another to modify them, and watch the display update live in an interactive widget. When you are happy, run the identical code on hardware.
See the LVGL guide for wiring details and the Jupyter platform notes for the async execution model.
GUI library integration¶
PyDisplay also drops in under other GUI stacks:
| Library | Notes |
|---|---|
| LVGL | Full-featured C toolkit via the sister projects above. |
| Nano-GUI | @peterhinch's lightweight FrameBuffer GUI (display-only). |
| MicroPython-Touch | @peterhinch's touch GUI. |
| TFT / st7789py ports | russhughes-style font and bitmap rendering. |
| PyWidgets | The bundled add_ons/pdwidgets toolkit. |
Related PyDevices repositories¶
- pydisplay — this project.
- micropython-lib — precompiled MIP packages (index).
- pydisplay_cmods — MicroPython User C Modules for PyDisplay.