我正在尝试编写一个非常简单的程序,该程序将等待 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/