es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para detener un programa cuando se presiona la tecla q del teclado, se puede utilizar el módulo keyboard junto con un bucle while. La función keyboard.is_pressed() se puede utilizar para detectar la presión de la tecla q y sys.exit() para salir del programa.

    Para lograr esto en el código anterior y omitir time.sleep, se puede llamar a la función keyboard.is_pressed() antes de la función time.sleep(). Si se presiona la tecla q, 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 tecla q.

    Aquí está el código modificado con los cambios mencionados:

    import sys
    import time
    
    import keyboard
    
    def hd():
        print("Hola")
    
        presionado = False # variable de indicador para realizar un seguimiento de si se ha presionado 'q'
        while not presionado:
            if keyboard.is_pressed("q"): # detectar presión de tecla
                presionado = True # establecer indicador a Verdadero
                print("Saliendo del programa...")
                sys.exit()
    
            time.sleep(0.1) # dormir durante una pequeña cantidad de tiempo para reducir el uso de la CPU
    
    while True:
        hd()
    

    En este código modificado, el programa saldrá inmediatamente si se presiona la tecla q. La función time.sleep() ha sido reemplazada por un bucle while para detectar la presión de teclas, y la variable de indicador presionado se utiliza para salir del bucle y del programa cuando se presiona la tecla q. La función time.sleep() ha sido reemplazada por un pequeño time.sleep() para reducir el uso de la CPU.

Comments are closed.