Python - Detectar pulsación de tecla

   
Vista:

Detectar pulsación de tecla

Publicado por epicteto (43 intervenciones) el 16/05/2014 14:29:16
Hola

Este código detecta si se ha pulsado una tecla y la imprime:

1
2
3
4
5
6
7
8
9
import sys
 
x='si'
 
while x=='si':
    tecla = sys.stdin.read(1)
    print 'Has presionado ', tecla
    if tecla=='s':
        x='no'

sin embargo, al pulsar "s" no se rompe el bucle. ¿puede decirme alguien el motivo? ¿qué habría que hacer para que al pulsar "s" el bucle se interrumpiera?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Detectar pulsación de tecla

Publicado por gadi (16 intervenciones) el 16/05/2014 14:42:58
1
2
3
4
5
6
7
8
9
10
11
import sys
 
x='si'
 
while x=='si':
    tecla = sys.stdin.read(1)
    if tecla != 's':
        print 'Has presionado ', tecla
    else:
        x='no'
        print 'Se rompe el bucle'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detectar pulsación de tecla

Publicado por epicteto (43 intervenciones) el 16/05/2014 14:54:47
Gadi, gracias por tu respuesta, pero lo he probado y sigue sin romper el bucle..

Lo que pretendo es que al pulsar "s" se interrumpa el programa. O estoy equivocado o con tu código esto no ocurre..

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detectar pulsación de tecla

Publicado por UnoPorAhi (16 intervenciones) el 16/05/2014 16:04:37
A mi si me sale del bucle con ambos codigos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detectar pulsación de tecla

Publicado por epicteto (43 intervenciones) el 16/05/2014 16:12:05
Pues sinceramente ... no lo entiendo. A mi me imprime las teclas que pulso, pero el bucle sigue corriendo.

Uso python 2.7 sobre Debian, pero creo que esto no tiene nada que ver ..¿no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detectar pulsación de tecla

Publicado por epicteto (43 intervenciones) el 16/05/2014 16:38:59
Perdón !!

Disculpad, me había hecho un lío tremendo. No es mi mejor día

Efectivamente funcionan ambos códigos, pero lo que pretendo es que el bucle se interrumpa sin tener que pulsar "enter" tras la tecla que elija. He visto varios ejemplos en google pero son muy complicados, hay que usar módulos para juegos y no necesito todo eso. ¿puede orientarme alguien?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detectar pulsación de tecla

Publicado por UnoPorAhi (16 intervenciones) el 16/05/2014 17:40:48
Lo mejor es que utilices un modulo ya hecho:

https://pypi.python.org/pypi/getch


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Detectar pulsación de tecla

Publicado por epicteto (43 intervenciones) el 16/05/2014 20:10:51
Por si a alguien le sirve de ayuda, decir que me he encontrado con este fragmento de código que adaptándolo adecuadamente hace lo que yo quiero, esperar a que yo pulse una tecla determinada sin interrumpir la ejecución del programa principal:

http://code.activestate.com/recipes/203830/

gracias a todos los que me habéis respondido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar