Skip to main content

A Pythonic API wrapper for SDL2.

Project description

sdl2hl is a Python package providing a friendly, Pythonic wrapper around the SDL2 library. sdl2hl calls SDL2 using Kevin Howell’s sdl2-cffi package (which can be found here: sdl2hl maintains sdl2-cffi’s advantages of using cffi and being zlib licensed, while providing an API that hides the gruesome details of the FFI layer from the user.


The goals of sdl2hl are:

  • Provide a straightforward, Pythonic API on top of the functionality provided by SDL2.
  • Provide good documentation, independent of the SDL2 documentation.
  • Cover as much of the SDL2 API as possible, excluding elements of the API that do not provide value to a program written in Python (e.g. thread management and shared object loading).

An explicit anti-goal of sdl2hl is providing any significant functionality beyond that which is provided by SDL2. sdl2hl may be a reasonable foundation of a larger game library, but it will not become one itself.


sdl2hl versioning follows the semver 2.0 standard. Once sdl2hl hits 1.0, every effort will be made to prevent backwards incompatible changes. If a backwards incompatible change absolutely cannot be avoided, sdl2hl’s major version will be incremented. However, since sdl2hl has not hit 1.0, for now there may be breaking changes at any time. Sorry.


sdl2hl is licensed under the same zlib license as SDL2 and sdl2-cffi. More details can be found in the LICENSE.txt file that (should) be found in this distribution.


Contributions are welcome! If you encounter a bug or have a request or suggestion please open an issue on github at . If you want to submit a patch, please open a github pull request at .


import sys

import sdl2hl

BACKGROUND_COLOR = (0,0,0,255)
AVATAR_COLOR = (255,0,0,255)

window = sdl2hl.Window()
renderer = sdl2hl.Renderer(window)
avatar = sdl2hl.Rect(w=64, h=64)

while True:
    for event in
        if event.type == sdl2hl.QUIT:
        elif event.type == sdl2hl.EventType.keydown and event.keycode == sdl2hl.KeyCode.left:
            avatar.x -= 1
        elif event.type == sdl2hl.EventType.keydown and event.keycode == sdl2hl.KeyCode.right:
            avatar.x += 1
        elif event.type == sdl2hl.EventType.keydown and event.keycode == sdl2hl.KeyCode.up:
            avatar.y -= 1
        elif event.type == sdl2hl.EventType.keydown and event.keycode == sdl2hl.KeyCode.down:
            avatar.y += 1

    renderer.draw_color = BACKGROUND_COLOR
    renderer.draw_color = AVATAR_COLOR


Project details

Download files

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

Files for sdl2hl, version 0.3.5
Filename, size File type Python version Upload date Hashes
Filename, size sdl2hl-0.3.5-py2-none-any.whl (26.0 kB) File type Wheel Python version py2 Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page