17

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

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

我正在使用 Windows 7,PyCharm 3.4(在空闲时也是如此)。

怎么了?有没有其他方法可以在不输入的情况下读取输入?

4

3 回答 3

15

Run窗口的特殊模式下是可能的。

  • 检查Emulate terminal in output console设置复选框Run/Debug Configurations
于 2018-01-20T15:57:34.930 回答
1

您正在尝试<Class 'Bytes'><Class 'string'>.

keya 转换为 astring然后比较:

import msvcrt

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

要在命令行中运行程序,请转到:编辑 Configurations > Execution > enable "Emulate terminal in output console"

于 2020-05-29T18:35:15.933 回答
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.
于 2020-01-11T09:31:40.977 回答