import sys from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * r = 0 g = 0 b = 0 def draw(): glClearColor(0.5, 0.5, 0.5, 1) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) global r,g,b if r and g and b: glColor3f(r, g, b) else: glColor3f(0, 0, 0) glRectf(-0.5, -0.5, 0.5, 0.5) glutSwapBuffers() def keyboard(key, x, y): global r, g, b if key == chr(27): sys.exit(0) elif key == 'r': r = 1 elif key == 'g': g = 1 elif key == 'b': b = 1 elif key == GLUT_KEY_UP: print 'up pressed' glutPostRedisplay() print "key pressed:", key, r, g, b, glutGetModifiers() def keyboardUp(key, x, y): global r, g, b if key == 'r': r = 0 elif key == 'g': g = 0 elif key == 'b': b = 0 glutPostRedisplay() print "key released:", key, r, g, b glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) glutInitWindowSize(400, 400) glutInitWindowPosition(0,0) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glutSpecialFunc(keyboard) glutKeyboardUpFunc(keyboardUp) glutIgnoreKeyRepeat(1) glEnable(GL_DEPTH_TEST) glutMainLoop()