如何在一段时间后禁用键盘?

问题描述 投票:0回答:1

我希望在程序运行时,我输入的所有键都被忽略。在一个简单的例子中,我要解决的问题如下。

from time import sleep
sleep(5)

如果我在这 5 秒内输入一些内容,那么当时间到了时,我写的任何内容都会出现。在这种情况下,它将显示在命令行中。

这在创建多个线程时会影响我,其中一个线程专门在几秒钟内打印多次,当它完成时,另一个线程接受输入。在另一个简单的例子中,它类似于:

from time import sleep
sleep(5) # If I type something here and press 'Enter', right after the 5 seconds, the input will auto-fill
entry = input('Write something: ')

我搜索了任何可以完成该任务的库,但什么也没找到。

python multithreading keyboard python-multithreading
1个回答
0
投票

此演示代码将在前 5 秒内收集键盘输入。

import msvcrt
import time

def user_input(timeout):
    print("You have 5 seconds to input something:")
    start_time = time.time()

    input_text = ""
    while True:
        if msvcrt.kbhit():
            char = msvcrt.getch().decode("utf-8")
            if char == '\r':
                break
            input_text += char

        current_time = time.time()
        if current_time - start_time > timeout:
            print("\nTime's up!")
            return input_text if input_text else None

    return input_text

if __name__ == "__main__":
    result = user_input(5)
    if result is not None:
        print("You entered:", result)

© www.soinside.com 2019 - 2024. All rights reserved.