A ctypes-based wrapper for GLFW3.
Project description
This module provides Python bindings for GLFW (on GitHub: glfw/glfw). It is a ctypes wrapper which keeps very close to the original GLFW API, except for:
function names use the pythonic words_with_underscores notation instead of camelCase
GLFW_ and glfw prefixes have been removed, as their function is replaced by the module namespace (you can use from glfw.GLFW import * if you prefer the naming convention used by the GLFW C API)
structs have been replaced with Python sequences and namedtuples
functions like glfwGetMonitors return a list instead of a pointer and an object count
Gamma ramps use floats between 0.0 and 1.0 instead of unsigned shorts (use glfw.NORMALIZE_GAMMA_RAMPS=False to disable this)
GLFW errors are reported as glfw.GLFWError warnings if no error callback is set (use glfw.ERROR_REPORTING=False to disable this, set it to ‘warn’ instead to issue warnings, set it to ‘log’ to log it using the ‘glfw’ logger or set it to a dict to define the behavior for specific error codes)
instead of a sequence for GLFWimage structs, PIL/pillow Image objects can be used
Installation
pyGLFW can be installed using pip:
pip install glfw
Windows
The GLFW shared library and Visual C++ runtime are included in the Python wheels.
To use a different GLFW library, you can set PYGLFW_LIBRARY to its location.
macOS
The GLFW shared library for 64-bit is included in the Python wheels for macOS.
If you are using a 32-bit Python installation or otherwise cannot use the library downloaded with the wheel, you can build and install it yourself by compiling GLFW from source (use -DBUILD_SHARED_LIBS=ON).
pyGLFW will search for the library in a list of search paths (including those in DYLD_LIBRARY_PATH). If you want to use a specific library, you can set the PYGLFW_LIBRARY environment variable to its path.
Linux
The GLFW shared library is included in the Python wheels for Linux. Although pyGLFW will try to detect whether the GLFW library for Wayland or X11 should be used, you can set the PYGLFW_LIBRARY_VARIANT variable to wayland or x11 to select either variant of the library.
If you cannot use these on your system, you can install the GLFW shared library using a package management system (e.g. apt install libglfw3 on Debian or Ubuntu) or you can build and install it yourself by compiling GLFW from source (use -DBUILD_SHARED_LIBS=ON).
pyGLFW will search for the library in a list of search paths (including those in LD_LIBRARY_PATH). If you want to use a specific library, you can set the PYGLFW_LIBRARY environment variable to its path.
cx_Freeze / PyInstaller
pyGLFW will search for the GLFW library in the current working directory, the directory of the executable and in the package on non-Windows platforms if running in an executable frozen with cx_Freeze or PyInstaller, unless the PYGLFW_LIBRARY environment variable is set.
Development Version
If you are using the development version of GLFW and would like to use wrappers for currently unreleased macros and functions, you can instead install:
pip install glfw[preview]
or set the PYGLFW_PREVIEW environment variable.
Note, however, that there will be a slight delay between the development version of GLFW and the wrappers provided by this package.
Example Code
The example from the GLFW documentation ported to pyGLFW:
import glfw
def main():
# Initialize the library
if not glfw.init():
return
# Create a windowed mode window and its OpenGL context
window = glfw.create_window(640, 480, "Hello World", None, None)
if not window:
glfw.terminate()
return
# Make the window's context current
glfw.make_context_current(window)
# Loop until the user closes the window
while not glfw.window_should_close(window):
# Render here, e.g. using pyOpenGL
# Swap front and back buffers
glfw.swap_buffers(window)
# Poll for and process events
glfw.poll_events()
glfw.terminate()
if __name__ == "__main__":
main()
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 Distributions
File details
Details for the file glfw-2.7.0.tar.gz
.
File metadata
- Download URL: glfw-2.7.0.tar.gz
- Upload date:
- Size: 31.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e209ad38fa8c5be67ca590d7b17533d95ad1eb57d0a3f07b98131db69b79000 |
|
MD5 | 85449b41b2c808fdddb9f305bab01cd6 |
|
BLAKE2b-256 | 1ffefd827e0e0babed43c08949644d1c2cafe5bc0f0ddcd369248eb27841c81c |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win_amd64.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win_amd64.whl
- Upload date:
- Size: 493.9 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20d4b31a5a6a61fb787b25f8408204e0e248313cc500953071d13d30a2e5cc9d |
|
MD5 | b59e0c43814244573b36bb06d45aa5b8 |
|
BLAKE2b-256 | 5c66645ed28b13680fe65de1d5334bb9cbb41c5f46e225c0b58b1b2994d5a6a3 |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win32.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win32.whl
- Upload date:
- Size: 497.8 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff92d14ac1c7afa9c5deb495c335b485868709880e6e080e99ace7026d74c756 |
|
MD5 | 2ca51828130a4f5f39325a31d1cd4120 |
|
BLAKE2b-256 | 1d027eaa19a61508c43f1c24d9da25368dc98e2fd9f7fdb0a1727e4eb687e2e8 |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_x86_64.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_x86_64.whl
- Upload date:
- Size: 211.8 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8630dd9673860c427abde5b79bbc348e02eccde8a3f2a802c5a2a4fb5d79fb8 |
|
MD5 | ad0cd501071aa7af6a78e76de2c21b4e |
|
BLAKE2b-256 | ece8462afb18f3627d11d4dab74228b52094e1a121d57fe57957c821c50bbfba |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_aarch64.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_aarch64.whl
- Upload date:
- Size: 202.5 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e33568b0aba2045a3d7555f22fcf83fafcacc7c2fc4cb995741894ea51e43ab6 |
|
MD5 | 6aa2d16a704caf75b0cfece7849b91f2 |
|
BLAKE2b-256 | 9f72bcab7489105f768f609c8bc631fc5ec4ddeca0db81745f2f3f21528d8c9c |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_x86_64.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_x86_64.whl
- Upload date:
- Size: 122.7 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6f54188dfc349e5426b0ada84843f6eb35a3811d8dbf57ae49c448e7d683bb4 |
|
MD5 | 47ab42869875b90a417661b7eab71110 |
|
BLAKE2b-256 | 3d67fbfda5bee27e2d16500d43eff07b48024b82ece528bb4981d96c4f89623b |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_i686.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_i686.whl
- Upload date:
- Size: 116.6 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8, manylinux: glibc 2.12+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 463aab9e5567c83d8120556b3a845807c60950ed0218fc1283368f46f5ece331 |
|
MD5 | 99726f9f798b857e10a94dccd73f0ee3 |
|
BLAKE2b-256 | 6e82179be3e7fc237bd9a32eca6b813e0274acced867f6e501b4c02c29a0eb4a |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_11_0_arm64.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 94.5 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56ea163c964bb0bc336def2d6a6a1bd42f9db4b870ef834ac77d7b7ee68b8dfc |
|
MD5 | e57149130d6b2f9c694114ddfad9f4d5 |
|
BLAKE2b-256 | 4d70a5ed74aa489163a72a52b03a02ff3d49b1c82c7edd5be78f09a292c29e21 |
File details
Details for the file glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_10_6_intel.whl
.
File metadata
- Download URL: glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_10_6_intel.whl
- Upload date:
- Size: 97.0 kB
- Tags: Python 2, Python 2.7, Python 3, Python 3.0, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8, macOS 10.6+ intel
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd82849edcceda4e262bd1227afaa74b94f9f0731c1197863cd25c15bfc613fc |
|
MD5 | bf690957e9265edf7f5d09b8625c17e3 |
|
BLAKE2b-256 | d1d740c26020bca98785bbb052b8c536324de77f0587d3fdec02e64fe77d73cb |