Re: [Python-es] Detectar una tecla

2011-06-21 Por tema Douglas Jiménez
El 20 de junio de 2011 09:33, Javier Collado javier.coll...@gmail.comescribió:

 Hola,

 El día 20 de junio de 2011 15:49, Douglas Jiménez doug...@gmail.com
 escribió:
  Quizás si explico lo que quiero hacer ..

 Quizá en lugar de desarrollar la aplicación para consola, sea más
 práctico hacerlo para un entorno de ventanas...
 Un saludo,
Javier


Siguiendo la recomendación de Javier y por aquello de que Unas cuantas
horas de ensayo y error pueden ayudarte a ahorrar unos minutos de revisión
de los manuales, llevo ya unas cuantas horas leyendo el manual de TKinter
de Fredrik Lundh, que conseguí en la red. Así que esta parte del hilo creo
que va dirigida a quienes manejen TKinter.

Al incio del capítulo 7, en la página 19, Lundh da un ejemplo para manejar
el evento de capturar pulsaciones del ratón. Lo corrí haciendo las pequeñas
modificaciones necesarias para Python 3.1 y todo perfecto. Por supuesto que
se me vino la idea de adaptarlo para las pulsaciones de teclado y lo
convertí en esto:


# Archivo: tecla.py

from tkinter import *

def main():
  root = Tk()

  def callback(evento):
print(La tecla es, evento.keycode) # Línea clave del programa

  frame = Frame(root, width=100, height=100)
  frame.bind(KeyPress, callback)
  frame.pack()

  root.mainloop()


con lo cual pretendo que al presionar una tecla se imprima algo relacionado
con ella en el terminal (es la que llamé Línea clave del programa). En la
línea clave ha cambiado .keycode por .keysym, keysym_num y otras cosas, pero
nada de nada.

Como es natural, necesito una orientación a este respecto. Es claro que no
he entendido cómo manejar el evento KeyPress.

Gracias.

Douglas.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Javier Collado
Hola,

El día 20 de junio de 2011 12:46, Douglas Jiménez doug...@gmail.com escribió:

 De mis tiempos con Pascal recuerdo la función ReadKey:

En C la  función equivalente a ReadKey se llama getch. En python tenemos:
- curses.window.getch (linux)
- msvcrt.getch (windows)

Para linux, existen otras soluciones basadas en termios cuando no
necesitas programar en curses:
http://snippets.dzone.com/posts/show/915
http://love-python.blogspot.com/2010/03/getch-in-python-get-single-character.html

Un saludo,
Javier
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Douglas Jiménez
El 20 de junio de 2011 07:07, Javier Collado javier.coll...@gmail.comescribió:

 Hola,

 El día 20 de junio de 2011 12:46, Douglas Jiménez doug...@gmail.com
 escribió:

  De mis tiempos con Pascal recuerdo la función ReadKey:

 En C la  función equivalente a ReadKey se llama getch. En python tenemos:
 - curses.window.getch (linux)
 - msvcrt.getch (windows)


Gracias, Javier. Sin embargo, por terminal intenté esto:

  import curses
  tecla = ''
  while tecla == '':
...   tecla = curses.window.getch()

pero me da un error:

Traceback (most recent call last):
  File stdin, line 2, in module
AttributeError: 'module' object has no attribute 'window'
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Chema Cortes
El día 20 de junio de 2011 12:46, Douglas Jiménez doug...@gmail.com escribió:
 ¡Hola!

 ¿Qué función en Python me permite detectar una tecla para controlar un
 proceso con ella? Por ejemplo, para colocar algo como

 *** ¿Está de acuerdo, Sí, No? o  *** Presione C para continuar.

Prueba con esta receta:

http://code.activestate.com/recipes/203830/
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Javier Collado
Hola,

El día 20 de junio de 2011 13:57, Douglas Jiménez doug...@gmail.com escribió:
 Gracias, Javier. Sin embargo, por terminal intenté esto:



 pero me da un error:

Para utilizar curses hay que inicializar el terminal y asegurarse de
dejarlo como estaba en el momento de terminar la aplicación (esto se
puede hacer con curses.wrapper). Si decides utilizar curses, te
recomiendo echarle un vistazo a la documentación:
http://docs.python.org/library/curses.html

O utilizar alguna librería de más alto nivel como urwid:
http://excess.org/urwid/

En cualquier caso, un ejemplo más completo sería el siguiente:

import curses

class App(object):
def run(self):
curses.wrapper(self.run_curses)

def run_curses(self, window):
window.addstr('Pulse una tecla para continuar...')
window.getch()

app = App()
app.run()


Un saludo,
Javier
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Douglas Jiménez
El 20 de junio de 2011 08:45, Javier Collado javier.coll...@gmail.comescribió:

 Hola,

 El día 20 de junio de 2011 13:57, Douglas Jiménez doug...@gmail.com
 escribió:
  Gracias, Javier. Sin embargo, por terminal intenté esto:

 

  pero me da un error:

 Para utilizar curses hay que inicializar el terminal ...


Quizás si explico lo que quiero hacer se les puede hacer más fácil
orientarme. Quiero escribir algo parecido a la instrucción input para un
niño de tres años. Él se sabe todas las letras del alfabeto, pero no sabe
leer (por supuesto). La idea es hacer que vaya escribiendo letras en
secuencia, dirigido por un adulto, hasta que tenga una palabra, luego de lo
cual al presionar Enter pasará algo relacionado con el significado de la
palabra (lo cual sé programar).

Las letras se le aparecerán en un formato grande y en una ventana ad-hoc,
donde sucederá el evento ya comentado. Por eso necesito una rutina que se
quede esperando la letra para luego ponerla en cierto lugar de la ventana.
La palabra, por supuesto, la formo por concatenación de las letras.

Gracias.

Douglas.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Javier Collado
Hola,

El día 20 de junio de 2011 15:49, Douglas Jiménez doug...@gmail.com escribió:
 Quizás si explico lo que quiero hacer se les puede hacer más fácil
 orientarme. Quiero escribir algo parecido a la instrucción input para un
 niño de tres años. Él se sabe todas las letras del alfabeto, pero no sabe
 leer (por supuesto). La idea es hacer que vaya escribiendo letras en
 secuencia, dirigido por un adulto, hasta que tenga una palabra, luego de lo
 cual al presionar Enter pasará algo relacionado con el significado de la
 palabra (lo cual sé programar).

 Las letras se le aparecerán en un formato grande y en una ventana ad-hoc,
 donde sucederá el evento ya comentado. Por eso necesito una rutina que se
 quede esperando la letra para luego ponerla en cierto lugar de la ventana.
 La palabra, por supuesto, la formo por concatenación de las letras.

Quizá en lugar de desarrollar la aplicación para consola, sea más
práctico hacerlo para un entorno de ventanas en cualquiera de los
frameworks disponibles: gtk, qt, wxwindows, etc.

Por ejemplo, en gtk, que es el que conozco mejor, no habría problema
en capturar los eventos de teclado y, además, podrías controlar
fácilmente el tamaño de letra utilizado que sería uno de los
requisitos de acuerdo con la explicación.

Un saludo,
Javier
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Detectar una tecla

2011-06-20 Por tema Alexis Roda

En/na Douglas Jiménez ha escrit:
Quizás si explico lo que quiero hacer se les puede hacer más fácil 
orientarme. Quiero escribir algo parecido a la instrucción input para un 
niño de tres años. Él se sabe todas las letras del alfabeto, pero no 
sabe leer (por supuesto). La idea es hacer que vaya escribiendo letras 
en secuencia, dirigido por un adulto, hasta que tenga una palabra, luego 
de lo cual al presionar Enter pasará algo relacionado con el 
significado de la palabra (lo cual sé programar).


Las letras se le aparecerán en un formato grande y en una ventana 
ad-hoc, donde sucederá el evento ya comentado. Por eso necesito una 
rutina que se quede esperando la letra para luego ponerla en cierto 
lugar de la ventana. La palabra, por supuesto, la formo por 
concatenación de las letras.


Échale un vistazo a pygame (http://pygame.org), tal vez te sirva.




Saludos
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/