Muchas veces me preguntan y veo que preguntan como continuar si hay un input() y el usuario no presiona ENTER,lo más correcto desde mi perspectiva es usar threads y semaforos, pero cuando digo eso la respuesta más común es: "¿pódes hacer el código?, no manejo threads", pues bien, cualquiera puede hacer el código, el tema es que la mayoría solo copia y pega sin aprender nada, entonces me parece mejor hacer un código que haga algo similar y muy fácil, ya que usa lo más común de python.
Otra cosa, solo trabajo sobre windows y python 3.x por lo que el funcionamiento en otros S.O o versiones anteriores de python (2.x) no me interesan ni probar.
Bueno así usaría una función para casi emular input y que se corte con tiempo, por supuesto hay muchas más formas de hacerlo, pero quizá este sea un puntapie de inicio para sus códigos(que espero posteen)
Está incompleto por supuesto, pero si funcional en lo simple.
Claro que todos sabemos que esto es por consola y que si fuese con tkinter sería mucho más simple y mejor.
#-*- coding:utf-8 -*-
import msvcrt
import time
def input_tiempo(aviso = ">>>",duracion=10): #aviso es el prompt y duración cuanto hay que esperar
global nombre
nombre=""
print (aviso)
finaliza = time.time() + duracion #cuando terminar de esperar
while time.time()< finaliza:
if msvcrt.kbhit(): #msvcrt está recontra documentado y hay cientos de ejemplos
letra= msvcrt.getche().decode('ASCII')
if letra == "\r": #si el usuario presiona enter sigue normal
break
else:
nombre+= letra
#forma de uso
q=input_tiempo("Escribe tu nombre: ") #pongo lo que quiera y si no pongo duración es la que viene x defecto
if nombre != "":
print("\nHola ¡¡ {} !!".format(nombre))
else:
print("Hola desconocido")
Saludos