Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glfw-2.7.0.tar.gz (31.4 kB view details)

Uploaded Source

Built Distributions

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win_amd64.whl (493.9 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win32.whl (497.8 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_x86_64.whl (211.8 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_aarch64.whl (202.5 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_x86_64.whl (122.7 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_i686.whl (116.6 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_11_0_arm64.whl (94.5 kB view details)

Uploaded 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

glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_10_6_intel.whl (97.0 kB view details)

Uploaded 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

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

Hashes for glfw-2.7.0.tar.gz
Algorithm Hash digest
SHA256 0e209ad38fa8c5be67ca590d7b17533d95ad1eb57d0a3f07b98131db69b79000
MD5 85449b41b2c808fdddb9f305bab01cd6
BLAKE2b-256 1ffefd827e0e0babed43c08949644d1c2cafe5bc0f0ddcd369248eb27841c81c

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win_amd64.whl
Algorithm Hash digest
SHA256 20d4b31a5a6a61fb787b25f8408204e0e248313cc500953071d13d30a2e5cc9d
MD5 b59e0c43814244573b36bb06d45aa5b8
BLAKE2b-256 5c66645ed28b13680fe65de1d5334bb9cbb41c5f46e225c0b58b1b2994d5a6a3

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-win32.whl
Algorithm Hash digest
SHA256 ff92d14ac1c7afa9c5deb495c335b485868709880e6e080e99ace7026d74c756
MD5 2ca51828130a4f5f39325a31d1cd4120
BLAKE2b-256 1d027eaa19a61508c43f1c24d9da25368dc98e2fd9f7fdb0a1727e4eb687e2e8

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8630dd9673860c427abde5b79bbc348e02eccde8a3f2a802c5a2a4fb5d79fb8
MD5 ad0cd501071aa7af6a78e76de2c21b4e
BLAKE2b-256 ece8462afb18f3627d11d4dab74228b52094e1a121d57fe57957c821c50bbfba

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e33568b0aba2045a3d7555f22fcf83fafcacc7c2fc4cb995741894ea51e43ab6
MD5 6aa2d16a704caf75b0cfece7849b91f2
BLAKE2b-256 9f72bcab7489105f768f609c8bc631fc5ec4ddeca0db81745f2f3f21528d8c9c

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a6f54188dfc349e5426b0ada84843f6eb35a3811d8dbf57ae49c448e7d683bb4
MD5 47ab42869875b90a417661b7eab71110
BLAKE2b-256 3d67fbfda5bee27e2d16500d43eff07b48024b82ece528bb4981d96c4f89623b

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 463aab9e5567c83d8120556b3a845807c60950ed0218fc1283368f46f5ece331
MD5 99726f9f798b857e10a94dccd73f0ee3
BLAKE2b-256 6e82179be3e7fc237bd9a32eca6b813e0274acced867f6e501b4c02c29a0eb4a

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56ea163c964bb0bc336def2d6a6a1bd42f9db4b870ef834ac77d7b7ee68b8dfc
MD5 e57149130d6b2f9c694114ddfad9f4d5
BLAKE2b-256 4d70a5ed74aa489163a72a52b03a02ff3d49b1c82c7edd5be78f09a292c29e21

See more details on using hashes here.

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

File hashes

Hashes for glfw-2.7.0-py2.py27.py3.py30.py31.py32.py33.py34.py35.py36.py37.py38-none-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 bd82849edcceda4e262bd1227afaa74b94f9f0731c1197863cd25c15bfc613fc
MD5 bf690957e9265edf7f5d09b8625c17e3
BLAKE2b-256 d1d740c26020bca98785bbb052b8c536324de77f0587d3fdec02e64fe77d73cb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page