我试图在PyCharm中从控制台读取一个字符(不按回车键),但无济于事。
函数msvcrt.getch()
会停止代码,但不会对按键做出反应(甚至输入),msvcrt.kbhit()
总是返回0.例如,此代码不打印任何内容:
import msvcrt
while 1:
if msvcrt.kbhit():
print 'reading'
print 'done'
我使用的是Windows 7,PyCharm 3.4(闲置时也是如此)。
有什么问题?有没有其他方法可以在没有输入的情况下读取输入?
答案 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)
要在命令行中运行程序,请转到:编辑配置>执行>启用“在输出控制台中仿真终端” 。