This release is a pre-release and may not be stable for production use.
PyQt Screen Capture
A screen capture utility that works with PyQt6, PySide6, PyQt5, PySide2, and PySide.
Features
- Cross-platform (Windows, Linux, macOS, etc.)
- Supports Python 2+
- Automatically detects available Qt bindings
- Memory-efficient screen capture using shared ndarrays in OpenCV-compatible HWC BGRX 8888 format
- Simple generator-based interface
Installation
Make sure you have PyQt6, PySide6, PyQt5, PySide2, or PySide installed.
Then install pyqt-screen-capture:
pip install pyqt-screen-capture
Usage
Capture single frame
from pyqt_screen_capture import hwc_bgrx_8888_screen_capturer
screen_capturer = hwc_bgrx_8888_screen_capturer()
# Get next screen frame (as numpy array in HWC BGRX 8888 format)
frame = next(screen_capturer)
# Example: Convert to RGB and display with matplotlib
import matplotlib.pyplot as plt
plt.imshow(frame[:, :, [2, 1, 0]]) # Convert BGR to RGB
plt.show()
Continuous capture
import cv2
from pyqt_screen_capture import hwc_bgrx_8888_screen_capturer
for frame in hwc_bgrx_8888_screen_capturer():
# Process frame (OpenCV, etc.)
cv2.imshow('Screen Capture', frame[:, :, :3]) # Use BGR channels only
key = cv2.waitKey()
if key & 0xFF == ord('q'):
break
Caveat
You MUST use the shared ndarray between yields, as the underlying buffer is freed afterward:
from pyqt_screen_capture import hwc_bgrx_8888_screen_capturer
screen_capturer = hwc_bgrx_8888_screen_capturer()
r1 = next(screen_capturer)
# OK to use r1 here
r2 = next(screen_capturer)
# OK to use r2 here, DO NOT USE r1 HERE!
Acknowledgments
This project modifies code automatically determining which Qt package to use from pyqtgraph, available under the MIT License
Contributing
Contributions are welcome! Please submit pull requests or open issues on GitHub.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Release files for pyqt-screen-capture 0.1.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyqt_screen_capture-0.1.0a1.tar.gz | 4.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyqt_screen_capture-0.1.0a1-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 9.1 kB
Release files / pyqt_screen_capture-0.1.0a1.tar.gz
| Download URL | pyqt_screen_capture-0.1.0a1.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
96c68ab888088326bf285e8605925ed32c7cd9899a7c4dc9a02e815434d29ea3
|
|
BLAKE2b-256 checksum How to use checksums |
45a39d561f322aee2db893b0e94c49f5f0d0d6a7b11ea5ce340da40cadf0a7c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / pyqt_screen_capture-0.1.0a1-py2.py3-none-any.whl
| Download URL | pyqt_screen_capture-0.1.0a1-py2.py3-none-any.whl |
|---|---|
| Size | 4.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
0c6c3287fac69c14e68420dc2d93f4d3187b311bff07fd978a68616a65fa0e97
|
|
BLAKE2b-256 checksum How to use checksums |
3931469309f34a031b5852db58a2b106b1da0686e7ace93e8e939ec0f29a9606
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|