【问题标题】:getch() in Python displaying wrong outputPython中的getch()显示错误的输出
【发布时间】:2017-03-23 09:38:12
【问题描述】:

我尝试在 python 中运行这段代码

from msvcrt import getch

while True:
      char = getch()
      print char

但这会无限显示字符“ÿ”。

谁能帮我解决这个问题 在此先感谢

【问题讨论】:

标签: python python-2.7 getch


【解决方案1】:

当我通过命令行运行相同的程序时,它工作正常。 我相信您正在尝试使用 IDE?如果您使用的是 pycharm,则相同的查询已发布给他们,并且在一年内没有得到答复。

链接:Using getch() in pycharm

请在命令提示符下尝试相同的代码并告诉我们。

更新答案:

getch() 需要一个工作的“控制台”窗口,当你运行 Idle 时,你不会得到一个作为使用 pythonw.exe 的设置。因此,它在技术上无法立即处理任何击键和返回。您可以尝试通过使用标准 python 从命令行启动 Idle 来验证这一点。 (但您可能必须在该控制台窗口中触发 getch() 才能返回)

我通过从命令行启动 IDLE 亲自验证了您的程序。好吧,它至少不会无限期地返回该字符。它不会返回任何东西。

只是出于好奇,你真的需要为这个程序使用 IDLE 吗?常规命令行还不够吗?如果是,很抱歉我对这个问题帮不上什么忙。

从命令提示符启动空闲:python C:\Python27\Lib\idlelib\idle.py

答案来源:IDLE does not return getch() characters

【讨论】:

  • 我尝试从 cmd 运行它,它工作正常。但从空闲它的打印无限
  • @Buetman :好的,我浏览了有关此问题的各种链接。看起来这是 IDLE 的问题。请阅读我的更新答案
  • 感谢您的帮助。
【解决方案2】:

我不怪你想使用 IDLE 进行调试,但是 PDB 虽然不是那么方便,但它可以做任何 IDLE 可以做的事情,而且它没有这个问题(至少在 Windows XP-W10 中)。在 PDB 下,kbhit 和 getche 都可以正常工作。无论是否调试,在 W10 中,您的脚本第一次使用 getch 在用户按键之前返回垃圾,但后续使用是干净的。在早期版本的 Windows 中这不是必需的,但在实际使用之前始终使用 if kbhit() : getch() 以确保在请求用户输入之前有一个干净的缓冲区总是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2020-08-06
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多