Recently I needed to come up with some sort of widget in PyGTK to be able to draw selection boxes, drag them around, etc. over a background image. After spending two days with pycairo and having only what would be the basis for what I need done, I found Goocanvas, particularly its Python bindings!!
I already knew the name due to my subscription on PyGTK Mailing List but never had a change to dig in further. It is amazing!! You create items on a canvas, and you can deal with them one by one setting their properties, dealing with input events, etc., really nice.
Now I pretty much have what I needed (the drag selection boxes on top of an image) and I might extract it from the main program and make it available for anyone with such needs like I had.
Checkout this amazing work that allows one to do some neat stuff with cairo without sweating too much!