PyCharm:msvcrt.kbhit()和msvcrt.getch()不工作?

时间:2015-05-29 16:09:28

标签: pycharm msvcrt getch kbhit

我试图在PyCharm中从控制台读取一个字符(不按回车键),但无济于事。 函数msvcrt.getch()会停止代码,但不会对按键做出反应(甚至输入),msvcrt.kbhit()总是返回0.例如,此代码不打印任何内容:

import msvcrt
while 1:
    if msvcrt.kbhit():
        print 'reading'
print 'done'

我使用的是Windows 7,PyCharm 3.4(闲置时也是如此)。

有什么问题?有没有其他方法可以在没有输入的情况下读取输入?

3 个答案:

答案 0 :(得分:6)

可以在Run窗口的特殊模式下使用。

  • 检查Emulate terminal in output console
  • 中的Run/Debug Configurations设置复选框

答案 1 :(得分:0)

此代码将修复。因此,请使用key.lower()

while True:
    key = msvcrt.getch()
    if key == "b'w'":
        print("Pressed: W without lower()")
        #It won't work.
    if key.lower() == "b'w'":
        print("Pressed: W with lower()")
        #This one will work.
#I don't know why but key.lower() works.

答案 2 :(得分:0)

您正在尝试将<Class 'Bytes'><Class 'string'>进行比较。

key转换为string,然后进行比较:

import msvcrt

while True:
    if msvcrt.kbhit():
        key = str(msvcrt.getch())
        if key == "b'w'":
            print(key)

要在命令行中运行程序,请转到:编辑配置>执行>启用“在输出控制台中仿真终端”