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

Python PyCharm:msvcrt.kbhit()和msvcrt.getch()不工作?,python,pycharm,msvcrt,getch,kbhit,Python,Pycharm,Msvcrt,Getch,Kbhit,我试图在PyCharm中从控制台读取一个字符(不按enter键),但没有效果。 函数msvcrt.getch()停止代码,但不会对按键做出反应(甚至回车),并且msvcrt.kbhit()始终返回0。例如,此代码不打印任何内容: import msvcrt while 1: if msvcrt.kbhit(): print 'reading' print 'done' 我使用的是Windows7,PyCharm 3.4(与空闲状态下的heppens相同) 怎么了?有没有

我试图在PyCharm中从控制台读取一个字符(不按enter键),但没有效果。 函数
msvcrt.getch()
停止代码,但不会对按键做出反应(甚至回车),并且
msvcrt.kbhit()
始终返回0。例如,此代码不打印任何内容:

import msvcrt
while 1:
    if msvcrt.kbhit():
        print 'reading'
print 'done'
我使用的是Windows7,PyCharm 3.4(与空闲状态下的heppens相同)


怎么了?有没有其他方法可以直接读取输入而无需输入?

可以在
运行
窗口的特殊模式下进行

  • 选中输出控制台中的
    模拟终端
    运行/调试配置中的设置复选框

此代码将修复。所以使用
key.lower()


您正在尝试将
进行比较

转换为
字符串
,然后比较:

import msvcrt

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

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

此处存在相同问题。似乎没有任何方法可以在运行控制台中捕获按键。我真的希望有人能解决这个问题。这里也是一样,
key=msvcrt.getch()
在PyCharm 5.0.4中不起作用。我要求intellij tracker解决这个问题。如果你也想要它,你可以在这里投票:@VitBernatik I似乎也有同样的问题。有什么办法吗?还是没用。即使我选中了“模拟终端”复选框,我仍然会在pycharm中的kbhit中得到false,在常规控制台中得到true(如果我按了任何键)。
import msvcrt

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