Skip to content

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.