Re-escribiendo la misma linea
César Duque
notfound en notfound.org
Mar Mayo 25 17:27:11 CEST 2004
Hola Oscar, muy interesante me voy a guardar este mensaje.
Al final solucione con el \r y ocultando el molesto parpadeo del cursor con
\x1b[?25l
Gracias
At 16:23 25/05/2004, you wrote:
>On Tue, 25 May 2004 13:28:31 +0200
>César Duque <notfound en notfound.org> wrote:
>
>Buenas.
>
>Yo para lo que quieres, utilizo algo mas complicado pero queda la mar de
>bonito y es muy funcional, no me acuerdo donde lo encontre,
>solo se, que desde aquel dio lo tengo puesto en unos cuantos scripts de
>consola, te pongo aqui el codigo .-
>
>
>import sys,os
>#Definiendo los colores y la funcion de color que se van a usar en todo el
>programa
>enable_color = 1
>hotkeycol = "red"
>colors = {
> "black" : "30",
> "red" : "31",
> "green" : "32",
> "brown" : "33",
> "blue" : "34",
> "purple" : "35",
> "cyan" : "36",
> "lgray" : "37",
> "gray" : "1;30",
> "lred" : "1;31",
> "lgreen" : "1;32",
> "yellow" : "1;33",
> "lblue" : "1;34",
> "pink" : "1;35",
> "lcyan" : "1;36",
> "white" : "1;37",
> "lyellow" : "43"
> }
>def color(text, fg, bg=None, raw=0):
>
> if not enable_color:
> return text
> if type(fg) in (TupleType, ListType):
> fg, bg = fg
> if not fg:
> return text
> opencol = "\033["
> closecol = "m"
> if raw:
> opencol = r"\[\033["
> closecol = r"m\]"
> clear = opencol + "0" + closecol
> xterm = 0
> if os.environ["TERM"] == "xterm":
> xterm = 1
> b = ''
> # In xterm, brown comes out as yellow..
> if xterm and fg == "yellow":
> fg = "brown"
> f = opencol + colors[fg] + closecol
> if bg:
> if bg == "yellow" and xterm:
> bg = "brown"
> try:
> b = colors[bg].replace('3', '4', 1)
> b = opencol + b + closecol
> except KeyError:
> pass
> return "%s%s%s%s" % (b, f, text, clear)
>
>
>
>#Definimos la funcion que utilizaremos para la barra de progreso
>def progress(ratio, length=60, col=1, cols=("lgreen", "red", "blue"),
> nocol="=."):
> if ratio > 1:
> ratio = 1
> elchar, leftchar = nocol
> elapsed = int(round(ratio*length))
> left = length - elapsed
> bar = elchar*elapsed + leftchar*left
> bar = bar[:length]
> if col:
> c_elapsed, c_left, perc = cols
> bar = color(' '*elapsed, "gray", c_elapsed)
> bar = bar + color(' '*left, "gray", c_left)
> else:
> bar = elchar*elapsed + leftchar*left
> return bar
>
>Y una utilizacion simple de todo ello seria .-
>
>print "\033[20;2H"+color("0%","white")
>print "\033[20;66H"+color("100%","white")
>
>print "\033[20;5H"+(progress(total))
>
>Yo para poner el cursor donde desee lo que hago es utilizar el codigo
>ansi, que es estandar y no te obliga a utilizar modulos estaños, de esa
>forma conseguimos un mayor compatibilidad, el codigo en el print que
>controla las coordenadas del cursosr es el "\033[20;2H".
>
> > Emm... gracias ahora me siento un poco retrasado mental o algo... pero era
> > lo que buscaba :)
> >
> > At 13:23 25/05/2004, you wrote:
> > >César Duque wrote:
> > >
> > >>Hola, intento hacer un sencillo script para consola que parsea un
> > >>archivo, es mi primer script para consola y me asalta una duda que no
> > >>puedo disipar, quizás podais echarme un cable.
> > >>Pretendo mostrar un porcentaje o una barra de progreso... estas cosas
> > >>para dejarlo un poco bonito, la cosa es que no se hacer una cosa
> > >>elemental en python y no encuentro documentación de como hacerla,
> esto es
> > >>reescribir el % en la misma linea en la que esta el cursor a medida que
> > >>vaya avanzando y no una nueva linea por cada vez que aumenten las
> > >>iteraciones del bucle.
> > >>
> > >>Lo he intentado con curses, ignorante de mi, hasta que me he dado cuenta
> > >>de que al reemplazar toda la "ventana" actual cuando intento obtener la
> > >>posicion es siempre 0,0.
> > >>Me interesaría que fuese en la propia linea de comandos despues de
> > >>escupir el resultado sin tener que borrar la pantalla cada vez etc.
> > >>
> > >>A ver si me podeis orientar con esta laguna conceptual o donde puedo
> leer
> > >>sobre esto. Gracias
> > >>
> > >>
> > >has probado con "\r"?
> > >p.e.
> > > >>> print "\rhola\rjo"
> > >jola
> >
> > _________________________
> > # César Duque - error404
> > # notfound [always at] notfound.org
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
_________________________
# César Duque - error404
# notfound [always at] notfound.org
Más información sobre la lista de distribución Python-es