Skip to main content

lvgl-python

Native CPython extension for LVGL, generated from lvgl-bindings with no MicroPython interpreter.

This is the publishing endpoint in the LVGL family: it turns synced bindings into versioned pydevices-lvgl wheels on TestPyPI. See lvgl-bindings — The LVGL family for how the family fits together.

Pip name: pydevices-lvgl · Import: import lvgl as lv

import lvgl as lv
# import display_driver  # optional; needs a PyDevices board_config

Install

Prebuilt wheels are published as pydevices-lvgl on TestPyPI (import as lvgl). CI builds a separate wheel for each CPython minor (3.10–3.14) on Linux x86_64 and Windows x64, Android wheels for 3.13–3.14 (android_21_arm64_v8a, android_21_x86_64 per PEP 738; cibuildwheel has no armeabi_v7a yet), plus a Pyodide pyemscripten_2026_0_wasm32 wheel (cp314) — pip/micropip select the tag that matches your interpreter.

Android (python-for-android / PyDevices): install the matching wheel from TestPyPI when building an APK, or let the pydeviceslvgl p4a recipe fetch it (see android-template):

pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ \
  --only-binary=:all: --platform android_21_arm64_v8a pydevices-lvgl
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pydevices-lvgl

Pyodide / micropip (browser WASM; same project):

import micropip
await micropip.install("pydevices-lvgl", index_urls="https://test.pypi.org/simple/")

Pin a release:

pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pydevices-lvgl==9.5.25

--extra-index-url https://pypi.org/simple/ lets pip fetch dependencies (e.g. setuptools) from PyPI. Use the same pip / python you will run (e.g. pip.exe with Windows 3.14).

Quick check:

python -c "import lvgl as lv; lv.init(); lv.deinit(); print('ok')"

WSL + Windows Python — pip.exe / python.exe on PATH:

pip.exe install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pydevices-lvgl==9.5.25
python.exe -c "import lvgl as lv; lv.init(); lv.deinit(); print('ok')"

To build from source instead, see building.md.

Usage

When using pydevices board configs, display_driver sets up the display, input devices, and background timer automatically:

import display_driver  # noqa: F401 - initializes display, input, and timer
import lvgl as lv
from display_driver import app

scr = lv.screen_active()
label = lv.label(scr)
label.set_text("Hello from PyDevices LVGL!")
label.center()

# Standalone scripts: keep the process alive
# Interactive REPL (python -i): app.run() returns immediately so the prompt is usable!
app.run()

2. Standalone Raw LVGL Setup (Custom backends)

For custom setups without a pydevices board config:

import lvgl as lv

lv.init()

disp = lv.display_create(240, 240)
lv.display_set_color_format(disp, lv.COLOR_FORMAT.RGB565)
buf = lv.draw_buf_create(240, 240, lv.COLOR_FORMAT.RGB565, 0)
lv.display_set_draw_buffers(disp, buf, None)
lv.display_set_render_mode(disp, lv.DISPLAY_RENDER_MODE.PARTIAL)

scr = lv.screen_active()
label = lv.label(scr)
label.set_text("Hello")
print(label.get_text())

def on_clicked(event):
    print("clicked", event.get_code())

scr.add_event_cb(on_clicked, lv.EVENT.CLICKED, None)
scr.send_event(lv.EVENT.CLICKED, None)

lv.deinit()

Type checking

Wheels install lvgl.pyi next to the lvgl extension module. For editable builds, pip install -e . copies generated/lvgl.pyi at build time.

If your checker does not pick it up, set python.analysis.stubPath (Pylance) or stubPath (pyright) to a directory containing lvgl.pyi, or symlink typings/lvgl/__init__.pyi to this repo’s vendored generated/lvgl.pyi.

API style

The binding follows the same naming as the MicroPython port where possible:

Pattern Example
Module constants lv.SYMBOL_OK, lv.EVENT.CLICKED
Enum namespaces lv.COLOR_FORMAT.RGB565, lv.DISPLAY_RENDER_MODE.PARTIAL
Widget types (callable) lv.obj(), lv.label(parent), lv.button(parent)
Object methods label.set_text("…"), scr.add_event_cb(cb, lv.EVENT.CLICKED, None)
Module functions lv.display_create(240, 240), lv.screen_active()
Struct methods event.get_code() on lv_event_t wrappers
Module-level struct helpers lv.event_get_code(event) (same as MP module API)

Display configuration uses module-level functions (lv.display_set_flush_cb, etc.), not methods on a display object.

Limitations

  • Displays use module functions, not methods. After disp = lv.display_create(...), configure the display with calls like lv.display_set_flush_cb(disp, cb) — not disp.set_flush_cb(cb).
  • Prefer module functions if a widget method acts wrong. Some widgets share similar LVGL internals, so an occasional method on one widget type may not map to the function you expect. If something looks off, try the matching lv.* module function (same name as in the LVGL C API).
  • Low-level pointer helpers are incomplete. A few advanced pointer utilities are not fully exposed in Python yet; the binding uses a small placeholder where needed.
  • Keep widgets alive while they have callbacks. When you call add_event_cb(handler, ...) with user_data=None, the binding stores your handler on that widget. If Python garbage-collects the widget while LVGL still uses it, the callback can stop working. Hold a reference (e.g. keep it in a variable or list) for as long as the callback should run. Callbacks are removed when you delete the event or destroy the widget.

License

MIT — see LICENSE.

Metadata

Release files for pydevices-lvgl 9.5.37

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pydevices-lvgl 9.5.37
File Actions
pydevices_lvgl-9.5.37-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pydevices_lvgl-9.5.37-cp314-cp314-win_amd64.whl
pydevices_lvgl-9.5.37-cp314-cp314-pyemscripten_2026_0_wasm32.whl CPython 3.14 CPython 3.14 PyEmscripten 2026.0+ WebAssembly Details for pydevices_lvgl-9.5.37-cp314-cp314-pyemscripten_2026_0_wasm32.whl
pydevices_lvgl-9.5.37-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details for pydevices_lvgl-9.5.37-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
pydevices_lvgl-9.5.37-cp314-cp314-android_21_x86_64.whl CPython 3.14 CPython 3.14 Android API level 21+ x86-64 Details for pydevices_lvgl-9.5.37-cp314-cp314-android_21_x86_64.whl
pydevices_lvgl-9.5.37-cp314-cp314-android_21_arm64_v8a.whl CPython 3.14 CPython 3.14 Android API level 21+ ARM64 v8a Details for pydevices_lvgl-9.5.37-cp314-cp314-android_21_arm64_v8a.whl
pydevices_lvgl-9.5.37-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pydevices_lvgl-9.5.37-cp313-cp313-win_amd64.whl
pydevices_lvgl-9.5.37-cp313-cp313-pyemscripten_2025_0_wasm32.whl CPython 3.13 CPython 3.13 PyEmscripten 2025.0+ WebAssembly Details for pydevices_lvgl-9.5.37-cp313-cp313-pyemscripten_2025_0_wasm32.whl
pydevices_lvgl-9.5.37-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details for pydevices_lvgl-9.5.37-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
pydevices_lvgl-9.5.37-cp313-cp313-android_21_x86_64.whl CPython 3.13 CPython 3.13 Android API level 21+ x86-64 Details for pydevices_lvgl-9.5.37-cp313-cp313-android_21_x86_64.whl
pydevices_lvgl-9.5.37-cp313-cp313-android_21_arm64_v8a.whl CPython 3.13 CPython 3.13 Android API level 21+ ARM64 v8a Details for pydevices_lvgl-9.5.37-cp313-cp313-android_21_arm64_v8a.whl
pydevices_lvgl-9.5.37-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pydevices_lvgl-9.5.37-cp312-cp312-win_amd64.whl
pydevices_lvgl-9.5.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details for pydevices_lvgl-9.5.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
pydevices_lvgl-9.5.37-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pydevices_lvgl-9.5.37-cp311-cp311-win_amd64.whl
pydevices_lvgl-9.5.37-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details for pydevices_lvgl-9.5.37-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
pydevices_lvgl-9.5.37-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pydevices_lvgl-9.5.37-cp310-cp310-win_amd64.whl
pydevices_lvgl-9.5.37-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details for pydevices_lvgl-9.5.37-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Total release size: 33.4 MB

Release files / pydevices_lvgl-9.5.37-cp314-cp314-win_amd64.whl

Download URL pydevices_lvgl-9.5.37-cp314-cp314-win_amd64.whl
Size 1.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
488663a2d076fc33dfe083bb2c9c4ff37740903fb6759f7c5047179f864c92e5
BLAKE2b-256 checksum
How to use checksums
5f3322e9d01da38b22b434c27f876ab95114d4f9fbd6194df8930a8d9d77be9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp314-cp314-pyemscripten_2026_0_wasm32.whl

Download URL pydevices_lvgl-9.5.37-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Size 502.8 kB
Tags CPython 3.14 PyEmscripten 2026.0+ WebAssembly
SHA-256 checksum
How to use checksums
729bdb36f9bdb8c51bc5bbc646980274688f37dbbe43da5b110db3d075854eb8
BLAKE2b-256 checksum
How to use checksums
367bee210f1af28a1a8f469201702a29996ef0f774093635be638f68be5c572f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 4.6 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b664e2eb6704937cfe7da4636c42cc09e4d00f57e34128880f3fd5be2ed9d043
BLAKE2b-256 checksum
How to use checksums
049df7079a1fe353661dbaf761465f90407463b8f97d5a3ac4e5d8ef06328f21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp314-cp314-android_21_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp314-cp314-android_21_x86_64.whl
Size 1.1 MB
Tags Android API level 21+ x86-64 CPython 3.14
SHA-256 checksum
How to use checksums
5b1ea95347c986a25aa12364a910f4ecaa0233099539bb8adfb039afebf42238
BLAKE2b-256 checksum
How to use checksums
ca7b9a41f9c768cecf51b93fe76ce2db848ede1f187df1dc5efc9bd7f506ee30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp314-cp314-android_21_arm64_v8a.whl

Download URL pydevices_lvgl-9.5.37-cp314-cp314-android_21_arm64_v8a.whl
Size 1.0 MB
Tags Android API level 21+ ARM64 v8a CPython 3.14
SHA-256 checksum
How to use checksums
55eb9e61704f21c114694af428fd1db65ccc474629fac8259eaad73297dc1bb7
BLAKE2b-256 checksum
How to use checksums
2f723f8f27664000664230019eb7248e90d7d26c6de86b1a75138bb0e7b83946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp313-cp313-win_amd64.whl

Download URL pydevices_lvgl-9.5.37-cp313-cp313-win_amd64.whl
Size 1.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
1719847851daa280d6417dc9aa9ad5f65bb32d8f9ab756fe0c1ef5481a776cdc
BLAKE2b-256 checksum
How to use checksums
027fc7442568b747269f1b3c0c6615fcf1c255fe602449e1817350ec8a0b13fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp313-cp313-pyemscripten_2025_0_wasm32.whl

Download URL pydevices_lvgl-9.5.37-cp313-cp313-pyemscripten_2025_0_wasm32.whl
Size 503.3 kB
Tags CPython 3.13 PyEmscripten 2025.0+ WebAssembly
SHA-256 checksum
How to use checksums
07079b7257a5d45bfa8676aad9cd29e08421bf41a4cc2a8be38b94691b2009be
BLAKE2b-256 checksum
How to use checksums
c3d06839edf34c57694dc9719d738692c84adc2bfda0cf002ea2283185395688
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 4.6 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8d16815d29b9f8bd641c67263808d2cf9d7d3fab5a19daef487ba1a5aa251b93
BLAKE2b-256 checksum
How to use checksums
2751b92838ff3c7662740ed60274e7df7c72028098ee83e294a89d1bf3f38b5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp313-cp313-android_21_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp313-cp313-android_21_x86_64.whl
Size 1.1 MB
Tags Android API level 21+ x86-64 CPython 3.13
SHA-256 checksum
How to use checksums
9eb29b1aa67927d484a227d7bf43d88afb2e3d32d8f91bf5454939a5330fa498
BLAKE2b-256 checksum
How to use checksums
50f8a4e7d5885f5b187f47b8e05e5e38f6f097c542cb00caa4a4216250bf4b42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp313-cp313-android_21_arm64_v8a.whl

Download URL pydevices_lvgl-9.5.37-cp313-cp313-android_21_arm64_v8a.whl
Size 1.0 MB
Tags Android API level 21+ ARM64 v8a CPython 3.13
SHA-256 checksum
How to use checksums
e7453486e888702f6a935065201173b24c452fbbe657538e9634a438f3205b3e
BLAKE2b-256 checksum
How to use checksums
3870619445c473eaed2a53d7433e58e0c518faed7b08ec463c5cfb6119fab1fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp312-cp312-win_amd64.whl

Download URL pydevices_lvgl-9.5.37-cp312-cp312-win_amd64.whl
Size 1.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4e6287274a82d081aaaea610ad3327b2742c503b7a2d3e540262d09c335d3e6e
BLAKE2b-256 checksum
How to use checksums
4201a44d54204b7d8c3ead5bdf9f6bd66effbbc9ec60e0bf34afbcfa8daaece8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 4.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0f1b840c5634f8c41dfe50b10a33f5159f2d2df4f06d01a3c82e772e04120fa7
BLAKE2b-256 checksum
How to use checksums
c021a34cf2d54b689f6f593342e94a4870c64bfb231e6f46f39a455908236daa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp311-cp311-win_amd64.whl

Download URL pydevices_lvgl-9.5.37-cp311-cp311-win_amd64.whl
Size 1.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
a562ce86204682a9446989bc6668fb82d542517a44add32944b87980f3a8aea0
BLAKE2b-256 checksum
How to use checksums
100f12146fcfd54faffe9d161925162781117561ccb8ab23199ea8751a1a2ad2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 4.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4b65bf57cd960cdf566541cd2749ec528e10c68cfe6e0915beb8e0b8cb0fd4f4
BLAKE2b-256 checksum
How to use checksums
5081eb2f85cdef0c342d4ecd95d1974fb38321c5be6fdf23235120bac6e6eb14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp310-cp310-win_amd64.whl

Download URL pydevices_lvgl-9.5.37-cp310-cp310-win_amd64.whl
Size 1.0 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
8e7b1a12a73d2b55de6c03bc9cd67c0367935a150cbc7d7497f256711c5b8c5e
BLAKE2b-256 checksum
How to use checksums
2298f500f82fc0c21690c2d6b74e3131b3a2d07d1b29c7f381232719f8f60fa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / pydevices_lvgl-9.5.37-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pydevices_lvgl-9.5.37-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 4.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4aeb58fba2553dfe70ee5a28a97fedd9fd207d6e8442bfce5f48915a49a8f4c9
BLAKE2b-256 checksum
How to use checksums
53b62774c463110a22ed8dfd19ac652e9d994a66b62ea47793e6595c6c661a71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for pydevices-lvgl 9.5.37

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

9.5.37 This release

16 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page