I'd use pyglet. It's all opengl from the start, doesn't build on top of ugly SDL library and has better interfaces than what I've seen on other python's multimedia libraries.
import pyglet
from pyglet.gl import *
class Application(object):
def __init__(self):
self.window = window = pyglet.window.Window()
window.push_handlers(self)
def on_draw(self):
self.window.clear()
glBegin(GL_TRIANGLES)
glVertex2f(0,0)
glVertex2f(200,0)
glVertex2f(200,200)
glEnd()
if __name__=='__main__':
app = Application()
pyglet.app.run()
I wrote this from scratch to show you a reference. You can pretty much start from that.
There's couple of useful things in the library like vertex lists, textures, scheduling, unicode fonts, a little bit of UI components, event dispatching, audio. The library itself is messy inside and I didn't like it too much. But then this is my opinion from every library that has widespread and that I've looked into.
Myself I'm dissatisfied to the opengl namespacing. It'd be better with non-C namespace in the front. This'd leave you in some flexibility:
from pyglet.gl import Begin, Vertex2f, TRIANGLES, End
...
Begin(TRIANGLES)
Vertex2f(0,0)
Vertex2f(200,0)
Vertex2f(200,200)
End()