Use CircuitPython displayio code on PC and Raspberry Pi outputting to a PyGame window instead of a physical display.
Project description
Introduction
Info
Blinka makes her debut on the big screen! With this library you can use CircuitPython displayio code on PC and Raspberry Pi to output to a PyGame window instead of a hardware display connected to I2C or SPI. This makes it easy to to use displayio elements on HDMI and other large format screens.
Warning: you must check display.check_quit() in the main loop and break if it’s true in order to correctly handle the close button!
Auto Refresh
Auto refresh works differently for this library than for native CircuitPython implementations due to technical limitations of Pygame.
Pygame does not support updating the UI and refreshing the display from a background thread but this is how CircuitPython implements it. To work around this limitation, the library tells the main thread to refresh the display on the next occasion. This happens whenever you call display.check_quit().
To keep your UI responsive, make sure to
call display.check_quit() on a regular basis
do lengthy processing (e.g. fetching data from the net) in a separate thread. This thread should only update data, but not any UI elements (e.g. labels).
If you disable auto-refresh, the display will still refresh on certain externally triggered events from the window-manager of your OS. This includes events like maximizing a window, moving it, uncovering it and so on. Failing to react to these events might make the window-manager angry and you will be asked what to do with the unresponsive window.
Dependencies
This driver depends on:
Please ensure all dependencies are available they can be installed with pip3
Optional Dependencies
This driver can optionally make use of these displayio module libraries:
They can be installed with pip3.
Installing from PyPI
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally from PyPI. To install for current user:
pip3 install blinka-displayio-pygamedisplay
To install system-wide (this may be required in some cases):
sudo pip3 install blinka-displayio-pygamedisplay
To install in a virtual environment in your current project:
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip3 install blinka-displayio-pygamedisplay
Usage Example
import displayio
from blinka_displayio_pygamedisplay import PyGameDisplay
display = PyGameDisplay(width=320, height=240)
splash = displayio.Group()
display.show(splash)
color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x00FF00 # Bright Green
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)
while True:
if display.check_quit():
break
Initialization Parameters
width (required) - The width of the window. A value of zero maximizes the window
height (required) - The height of the window. A value of zero maximizes the window
icon (optional) - An icon for the PyGame window
caption (optional) - A caption for the PyGame window
native_frames_per_second (optional) - High values result in high CPU load
hw_accel (optional) - Whether to use hardware acceleration. Default is True
flags (optional) - Pygame display flags, e.g. pygame.FULLSCREEN or pygame.NOFRAME
If you encounter GL or EGL Pygame errors, try setting hw_accel to False to disable hardware acceleration. Performance may be reduced.
Contributing
Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.
Documentation
For information on building library documentation, please check out this guide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blinka_displayio_pygamedisplay-4.0.1.tar.gz.
File metadata
- Download URL: blinka_displayio_pygamedisplay-4.0.1.tar.gz
- Upload date:
- Size: 238.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee9ade9958d22715bd698fee52175da165d4d69022840e04f12c46d2d9e0647
|
|
| MD5 |
1e22fbf64c5b90f04ead45da30c9951b
|
|
| BLAKE2b-256 |
99fec7ddf11ce0549fd33741253c2257d13e0b56905099411877783b60f74047
|
File details
Details for the file blinka_displayio_pygamedisplay-4.0.1-py3-none-any.whl.
File metadata
- Download URL: blinka_displayio_pygamedisplay-4.0.1-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c475bb600c611262cb887c34b4533ddf5bce5bcbe8a03c7ed22e1f082a682ab5
|
|
| MD5 |
6edb0701d32c21c41f549195b3e4672a
|
|
| BLAKE2b-256 |
b28531253d8b8555c613222ccc0906bac2618f5f7b28a481a037a755a9b2d89b
|