Detectar entrada clave en Python

(En 2013) No sé por qué Python es tan raro, no puedes encontrar esto buscando en Google con mucha facilidad, pero es bastante simple.

¿Cómo puedo detectar ‘ESPACIO’ o en realidad cualquier tecla? Cómo puedo hacer esto:

print('You pressed %s' % key) 

Esto debería incluirse en el núcleo de Python, así que no vincule módulos que no estén relacionados con Python.

Podrías hacer una pequeña aplicación Tkinter:

 import Tkinter as tk def onKeyPress(event): text.insert('end', 'You pressed %s\n' % (event.char, )) root = tk.Tk() root.geometry('300x200') text = tk.Text(root, background='black', foreground='white', font=('Comic Sans MS', 12)) text.pack() root.bind('', onKeyPress) root.mainloop() 

Use Tkinter, hay un montón de tutoriales en línea para esto. Básicamente, puedes crear eventos. Aquí hay un enlace a un gran sitio! Esto facilita la captura de clics. Además, si está intentando hacer un juego, Tkinter también tiene una GUI. Aunque no recomendaría Python para los juegos, podría ser un experimento divertido. ¡Buena suerte!

La entrada clave es un evento predefinido. Puede capturar eventos adjuntando event_sequence (s) a event_handle (s) utilizando uno o varios de los métodos de enlace existentes ( bind , bind_class , tag_bind , bind_all ). Para hacer eso:

  1. define un método event_handle
  2. elija un evento ( event_sequence ) que se ajuste a su caso de una lista de eventos

Cuando ocurre un evento, todos esos métodos de enlace invocan implícitamente el método event_handle al pasar un objeto de Event , que incluye información sobre aspectos específicos del evento que ocurrió, como argumento.

Para detectar la entrada de la clave, primero se pueden capturar todos los eventos '' o '' y luego averiguar la clave específica que se usa al usar el atributo event.keysym .

A continuación se muestra un ejemplo que utiliza el bind para capturar '' eventos '' y '' en un widget particular ( root ):

 try: # In order to be able to import tkinter for import tkinter as tk # either in python 2 or in python 3 except ImportError: import Tkinter as tk def event_handle(event): # Replace the window's title with event.type: input key root.title("{}: {}".format(str(event.type), event.keysym)) if __name__ == '__main__': root = tk.Tk() event_sequence = '' root.bind(event_sequence, event_handle) root.bind('', event_handle) root.mainloop()