我正在尝试编写一个非常简单的程序,该程序将等待 x 秒,然后检查是否按下了某个键,然后根据此结果将进入代码下方的不同循环。我有这个代码:

import msvcrt
import time
import sys

time.sleep(1)
if msvcrt.kbhit():
    sys.stdout.write('y')
else:
    sys.stdout.write('n')

所以我在第一次启动时按任意键(使 kbhit ==true)但它总是落在第二个语句并打印“n”。
任何建议我做错了什么?

{使用 Python 2.7 和空闲}

谢谢

最佳答案

msvcrt.kbhit() 函数只有在它所在的程序已经从 windows 命令行运行时才会起作用(或者如果当你双击它的 .py 文件时打开了一个控制台窗口来输入和输出)。

如果您从 IDLE 运行或使用 pythonw.exe 解释器,程序将不会连接到控制台窗口,msvcrt 中的 console-IO commands 将不起作用。

关于Python kbhit() 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18672923/

10-10 11:47