O que você deve fazer é definir variáveis que são desenhadas no retorno de chamada de desenho. Se você quiser que ele se redesenha, você pode usar isso para forçar:
drawing_area.queue_draw()
Editar : aqui está um exemplo de código que você pode usar:
clicks = [];
def on_drawing_area_button_press(self, widget, event):
print "Mouse clicked... at ", event.x, ", ", event.y
clicks.append([event.x, event.y])
drawing_area.queue_draw()
return True
def on_drawing_area_draw(self, drawing_area, cairo_context):
cairo_context.move_to(50, 50)
for point in clicks
cairo_context.line_to(point[0], point[1])
cairo_context.stroke()
return False