PyDevices logo
PyDevices

One display & graphics stack. Three Python runtimes.

Write display, input, and graphics code once and run it on MicroPython, CircuitPython, or CPython — from microcontrollers to the desktop and the browser.

Try the browser demos Documentation LVGL bindings

The stack

Start with pydisplay, add palettes or pdwidgets for theming and widgets, or LVGL for a full toolkit.

pydisplay

Pure-Python display, input, and event drivers for MicroPython, CircuitPython, and CPython. The foundation of the stack.

Visit site

palettes

Color palettes for pydisplay — wheel, cube, and Material Design swatches on MicroPython and CPython.

Visit site

pdwidgets

Cross-platform widget toolkit for pydisplay — buttons, lists, themes, and navigation on MicroPython and CPython.

Visit site

lv_bindings

The generator that turns LVGL's C API into bindings for MicroPython, CircuitPython, and CPython — one source of truth, three targets.

Visit site

cmods

The native-module workspace: build matrix and glue for the LVGL cmods across MicroPython, CircuitPython, and CPython.

Visit site

Native cmods

The C modules that give pydisplay real hardware speed and an LVGL widget toolkit.

displayif

Native display bus and framebuffer modules for pydisplay on MicroPython ports.

graphics

All-C graphics module — FrameBuffer and Area primitives — shared by MicroPython, CircuitPython, and CPython.

usdl2

A native SDL2 subset for pydisplay's desktop backend on MicroPython and CPython, unix & Windows.

lv_cpython_mod

Native CPython LVGL extension (import lvgl), generated from lv_bindings.

lv_micropython_cmod

MicroPython user C module glue for LVGL — allocator, usermod registration, smoke tests.

lv_circuitpython_mod

CircuitPython integration for LVGL — tree patches, build glue, and tests.

pydisplay_android

Android APK path for pydisplay — python-for-android recipes, buildozer demo, smoke tests.