Entrada del teclado por parte del usuario
¿Cómo obtengo la entrada del teclado de un usuario con python y muestro el nombre de esa tecla?
Por ejemplo:
El usuario hizo clic en “ESPACIO” y la salida es “ESPACIO”.
El usuario hizo clic en “CTRL” y la salida es “CTRL”.
Para una mejor comprensión, estoy utilizando la librería pygame y he creado un controlador de configuración para mi juego. Funciona bien, pero solo puedo usar las teclas en mi diccionario. No sé cómo agregar las otras teclas del teclado.
Mira el ejemplo:
class ConfiguracionTeclado():
def __init__(self, descripcion, tecla):
self.tecla = tecla
self.por_defecto = tecla
self.descripcion = descripcion
self.activo = False
def activar_cambio(self, x, y):
rectangulo_fijo = self.rect.move(x_fijo, y_fijo)
pos = pygame.mouse.get_pos()
if rectangulo_fijo.collidepoint((pos)):
if pygame.mouse.get_pressed()[0]:
self.activo = True
elif pygame.mouse.get_pressed()[0]:
self.activo = False
Esta es una parte de mi clase. En mi script, cargo todos los objetos relacionados con esa clase. Los objetos relacionados son las teclas opcionales en el juego.
Por ejemplo:
DISPARAR = ConfiguracionTeclado("DISPARAR", "q")
mover_derecha = ConfiguracionTeclado("mover derecha", "d")
y más teclas.
lista_teclas_obj = [DISPARAR, mover_derecha, …]
También he creado un diccionario de a-z, 0,9.
diccionario_teclas = { 'a': pygame.K_a,
'b': pygame.K_b,
'c': pygame.K_c,
...
'z': pygame.K_z,
'0': pygame.K_0,
...
'1': pygame.K_1,
'9': pygame.K_9,
}
Luego, en el bucle del juego:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
for k in lista_teclas_obj:
# definir cada tecla por el usuario
if k.activo:
k.tecla = event.unicode
por_defecto = False
if k.tecla en diccionario_teclas:
if event.key == diccionario_teclas[k.tecla]:
if k.descripcion == 'Mover derecha':
mover_derecha = True
if k.descripcion == 'DISPARAR':
DISPARAR = True
El código funcionó perfectamente, pero realmente no sé cómo agregar teclas que no sean letras y números, como “ENTER”, “ESPACIO”, etc.
davy.ai
Para obtener la entrada del teclado del usuario con Python y mostrar el nombre de esa tecla, puedes usar el siguiente código:
Este código continuamente monitoreará la entrada del teclado y mostrará el nombre de la tecla que se presiona. Por ejemplo, si el usuario presiona la tecla “SPACE”, la salida será “space”.
Para agregar teclas que no sean letras ni números, puedes utilizar las constantes definidas en el módulo pygame. Por ejemplo:
En tu caso específico, puedes agregar las teclas que no sean letras ni números a tu diccionario
dict_key
. Por ejemplo:Luego, en tu bucle de juego, puedes verificar estas teclas usando
'enter'
y'space'
, por ejemplo:¡Espero que esto te sea de ayuda!