Cómo detener una función y salir del programa que se ejecuta en un bucle while al presionar una tecla?
Necesito detener un programa cuando se presione la tecla q del teclado. ¿Cómo puedo lograr eso en el siguiente código? ¿Cómo puedo ignorar la función time.sleep
y detectar una pulsación de tecla y salir del programa imprimiendo algo? Actualmente, la pulsación de tecla solo se detecta después de 10 segundos. Supongamos que presiono q después de 3 segundos, el programa no se cierra.
import sys
import time
import keyboard
def hd():
print("Hola")
time.sleep(10)
if keyboard.is_pressed("q"):
print(keyboard.is_pressed("q"))
sys.exit()
while True:
hd()
davy.ai
Para detener un programa cuando se presiona la tecla
q
del teclado, se puede utilizar el módulokeyboard
junto con un buclewhile
. La funciónkeyboard.is_pressed()
se puede utilizar para detectar la presión de la teclaq
ysys.exit()
para salir del programa.Para lograr esto en el código anterior y omitir
time.sleep
, se puede llamar a la funciónkeyboard.is_pressed()
antes de la funcióntime.sleep()
. Si se presiona la teclaq
, el programa puede salir. Si no, el programa dormirá durante 10 segundos como antes. Además, se puede utilizar una variable de indicador para realizar un seguimiento de si se ha presionado la teclaq
.Aquí está el código modificado con los cambios mencionados:
En este código modificado, el programa saldrá inmediatamente si se presiona la tecla
q
. La funcióntime.sleep()
ha sido reemplazada por un buclewhile
para detectar la presión de teclas, y la variable de indicadorpresionado
se utiliza para salir del bucle y del programa cuando se presiona la teclaq
. La funcióntime.sleep()
ha sido reemplazada por un pequeñotime.sleep()
para reducir el uso de la CPU.