首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyCharm: msvcrt.kbhit()和msvcrt.getch()不工作?

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

Stack Overflow用户
提问于 2015-05-30 00:09:28
回答 3查看 7.9K关注 0票数 17

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

代码语言:javascript
复制
import msvcrt
while 1:
    if msvcrt.kbhit():
        print 'reading'
print 'done'

我使用的是Windows7,PyCharm 3.4 (idle中的相同版本)。

怎么啦?有没有其他方法可以只读输入而不回车?

EN

回答 3

Stack Overflow用户

发布于 2018-01-20 23:57:35

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

Run/Debug Configurations中选中

  • Emulate terminal in output console设置复选框
票数 15
EN

Stack Overflow用户

发布于 2020-05-30 02:35:16

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

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

代码语言:javascript
复制
import msvcrt

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

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

票数 1
EN

Stack Overflow用户

发布于 2020-01-11 17:31:41

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

代码语言:javascript
复制
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.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30534218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档