Two things are making your code slow that I notice immediately:
1) You're using a Python loop to do 400 operations. That's not going to be terribly fast.
2) More importantly, you're using fixed functionality to draw 400 polygons.
You can fix both problems by using a display list, vertex array, or vertex buffer object. I do not recommend the latter two, as they are more difficult (although more flexible, and also not technically deprecated).
To use display list rendering, simply bracket the drawing code (that's everything including the texture binding, the glBegin(...), the loops, and the glEnd()) as follows:
display_list = glGenLists(1)
#draw your stuff here
...and drop the whole thing outside of your main loop (put it with initialization). Then, to render the display list:
...and your polygons will be magically be drawn. And much faster too!
Another tip: disable vsync to get framerates faster than 60Hz. Simply do the following before creating the window:
Hope this helps, good luck, and welcome to PyOpenGL.