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