Ecosystem & sister projects

August 14, 2026 · View on GitHub

PyDevices is the graphics, input-event, and timing backend for the wider PyDevices ecosystem. Anything built on top of it inherits PyDevices's portability across MicroPython, CircuitPython, and CPython.

LVGL sister projects

Three sister projects wire the PyDevices portable stack into LVGL — the popular C graphics library — so you can build LVGL applications in pure Python. They use displaydev, neutral board input, and multimer on each runtime, while pydevices-examples hosts the examples:

ProjectRuntimeRole
lvgl-micropythonMicroPythonLVGL bindings; PyDevices drives display + input.
lvgl-circuitpythonCircuitPythonLVGL bindings backed by PyDevices.
lvgl-pythonCPythonLVGL bindings backed by PyDevices.

Because all three share PyDevices 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

PyDevices also drops in under other GUI stacks:

LibraryNotes
LVGLFull-featured C toolkit via the sister projects above.
Nano-GUI@peterhinch's lightweight FrameBuffer GUI (display-only).
Micro-GUI@peterhinch's button / encoder GUI.
MicroPython-Touch@peterhinch's touch GUI.
TFT / st7789py portsrusshughes-style font and bitmap rendering.
pdwidgetsCross-platform widget toolkit for PyDevices.
palettesColor palettes (wheel, cube, material_design).