Una pregunta simple, y otra no tanto

oscar o.merchan en terra.es
Mie Jun 4 19:54:17 CEST 2003


EUREKA este funciona de puta madre, me mantiene el bucle, sin parar a la
espera del teclado, y encima ya puedo hacer un mini menu para variar la
informacino del bucle como queria.

MIL GRACIAS A TOODOS.

Saluditos, Óscar Merchan.

Nunca te acostaras sin aprender algo nuevo ;-)


El mié, 04-06-2003 a las 16:22, Chema Cortés escribió:
> Marcos Sánchez Provencio escribió:
> > Si no necesitas multihilo (threads) puedes intentarlo también con el 
> > módulo select. Éste te permite hacer un bucle de atención a eventos, 
> > donde rellenarías los huecos con proceso por tu cuenta.
> 
> Esta una buena solución que debería figurar en alguno de los 
> repositorios de recetas de python (responde a una de las preguntas más 
> frecuentes de python).
> 
> El código podría ser algo así:
> 
> #!/usr/bin/python
> 
> import os, sys
> import tty
> from select import select
> 
> class NotTTYException(Exception): pass
> 
> class TerminalFile:
>          def __init__(self,infile):
>                  if not infile.isatty():
>                          raise NotTTYException()
> 		self.file=infile
> 
>                  #prepare for getch
>                  self.save_attr=tty.tcgetattr(self.file)
>                  newattr=self.save_attr[:]
>                  newattr[3] &= ~tty.ECHO & ~tty.ICANON
>                  tty.tcsetattr(self.file, tty.TCSANOW, newattr)
> 
>          def __del__(self):
> 		#restoring stdin
>                  import tty  #required this import here
>                  tty.tcsetattr(self.file, tty.TCSADRAIN, self.save_attr)
> 
>          def getch(self):
>                  if select([self.file],[],[],0)[0]:
>                          c=self.file.read(1)
>                  else:
>                          c=''
>                  return c
> 
> if __name__=="__main__":
>          s=TerminalFile(sys.stdin)
> 	print "Press q to quit..."
>          i=0
>          while s.getch()!="q":
>                  sys.stdout.write("%08d\r"%i)
>                  i+=1
>          print "-- END --"
> 
> 
> ----
> 

> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es


------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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