Graficos web

Juan M. Puertas juatman_2000 en yahoo.es
Jue Ene 12 23:18:05 CET 2006


  Hola amigos:
>  Las bibliotecas wxPython son para programas con ventanas (GUI) no para 
> CGIs
  Esto es muy aclarador, gracias Víctor. También muy aclarador tu mensaje, 
Mauricio.
  Gracias a Alberto, ¡que buena comunidad ésta! :-)
  Ya he instalado PIL y todo funciona a la perfección, podeis ver el código 
fuente más abajo, para quien necesite alguna vez hacer algo parecido.
    El gráfico se guarda para ser presentado posteriormente por la página 
web (esto último no funciona, creo que es un bug de TurboGears, el 
framework-web para python que he elegido para hacer pruebas).

  Si con TurboGears devuelves desde el programa en python lo siguiente:
_______________________________________________________

   return  '''<img src="sobre.png">'''
_______________________________________________________
  Cherrypy (componente de TurboGears y de Subway) muestra el mensaje de 
error "path not found".

  TurboGears genera controllers.py en la carpeta raíz del servidor, lo que 
veis a continuación es éste programa con las modificaciones para que dibuje 
un par de líneas cruzadas (como un sobre) y las guarde:
    Saludos :-)

_______________________________________________________
import turbogears
import cherrypy
import Image, ImageDraw
from turbogears import controllers

class Root(controllers.Root):
    @turbogears.expose(html="gs.templates.welcome")
    def index(self):
        # import time
        # return dict(now=time.ctime())
        # Lo siguiente es un formulario HTML que me ha servido para hacer 
pruebas con TurboGerars:
        return '''
            <form action="greetUser" method="POST" 
enctype="multipart/form-data">
            What is your name?
            <input type="text" name="name" />
            <input type="text" name="pame" />
            <input type="submit" />
            </form>'''
    index.exposed = True

    def greetUser(self, name = None, pame = None):
        # CherryPy passes all GET and POST variables as method parameters.
        # It doesn't make a difference where the variables come from, how
        # large their contents are, and so on.
        #
        # You can define default parameter values as usual. In this
        # example, the "name" parameter defaults to None so we can check
        # if a name was actually specified.
        if name:    # Obliga a que escribas al menos el nombre en el 
formulario (sólo para probar)
            im = Image.open("blanco.jpg")
            draw = ImageDraw.Draw(im)
            draw.line((0, 0) + im.size, fill=128)
            draw.line((0, im.size[1], im.size[0], 0), fill=128)
            del draw
            # graba en otro formato
            im.save("sobre.png", "PNG")
            #Lo siguiente genera la página web resultante
            return  '''<img src="sobre.png">''' # No funciona, pero la 
imagen se guarda correctamnente.
            # Greet the user!
            #return "Hey %s, what's up?" % (name + ' ' + pame + ' ' + s)
        else:
            if pame is None:
                # No name was specified
                return 'Please enter your name <a href="./">here</a>.'
            else:
                return 'No, really, enter your name <a href="./">here</a>.'
    greetUser.exposed = True

cherrypy.root = Root()


		
______________________________________________ 
LLama Gratis a cualquier PC del Mundo. 
Llamadas a fijos y móviles desde 1 céntimo por minuto. 
http://es.voice.yahoo.com




Más información sobre la lista de distribución Python-es