Python Pydev/Eclipse中的单字符输入

Python Pydev/Eclipse中的单字符输入,python,eclipse,pydev,Python,Eclipse,Pydev,我想捕获一个不带“enter”的单用户按键,然后看看它是“r”还是“b”等,特别是在带有PyDev的Eclipse中(Windows 7:64位,Python 3.6.1)。当然,书中提到了许多不错的选择。mrvcrt似乎在cmd.exe中工作,但在PyDev中不工作: 导入msvcrt mych=msvcrt.getwch() 打印('您按下:'+mych) 为什么不呢?我知道@MatthieuRiegler已经在。。。但我对任何有效的东西都持开放态度,不一定是mrvcrt。谢谢 问题在于P

我想捕获一个不带“enter”的单用户按键,然后看看它是“r”还是“b”等,特别是在带有PyDev的Eclipse中(Windows 7:64位,Python 3.6.1)。当然,书中提到了许多不错的选择。mrvcrt似乎在cmd.exe中工作,但在PyDev中不工作:

导入msvcrt
mych=msvcrt.getwch()
打印('您按下:'+mych)

为什么不呢?我知道@MatthieuRiegler已经在。。。但我对任何有效的东西都持开放态度,不一定是mrvcrt。谢谢

问题在于
PyDev/Eclipse
没有给你真正的终端(你的程序启动时没有真正的控制台,它只是重定向输出)

因此,另一种选择是检查您是否处于以下情况:

import sys
is_in_terminal = sys.stdin.isatty()

if not is_in_terminal:
    entered = input()  # input() on Py3, on Py2 it'd be raw_input()
else:
    import msvcrt
    entered = msvcrt.getwch()
唯一的问题是,如果它不在终端中,则内容仅可供程序在新行上使用(因此,不按enter键就不可能获得该输出)


请注意,拥有一个“真正的”终端是可能的,尽管它需要Eclipse内部的一些终端仿真——例如——然后PyDev可以在这样的终端中启动程序,而不是使用console视图。。。(但这只是在思想界,没有截止日期,因此,不幸的是,目前不可能在PyDev/Eclipse中没有输入就获取单个字符)。

谢谢,这就解释了问题!非常感谢