2017-09-19 15 views
0

PythonのPyDev(Windows 7では64ビット、 Python 3.6.1を参照してください)。もちろん、多くの素晴らしい代替案がPython read a single character from the userに記載されています。 mrvcrtはcmd.exeでは動作しますが、PyDevでは動作しないようです:Pydev/Eclipseでの1文字入力

import msvcrt 
mych = msvcrt.getwch() 
print('You pressed: ' + mych) 

なぜですか?私は@MatthieuRieglerが既にUsing msvcrt.getch() in Eclipse/PyDevでこれを尋ねてきたのを見ています...しかし、私は何かにはオープンしていますが、必ずしもmrvcrtではありません。ありがとう!

答えて

1

問題は、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を押すことなく、その出力を得ることは本当に可能ではありません)。

https://marketplace.eclipse.org/content/tcf-terminalsのように、Eclipse内で何らかの端末エミュレーションが必要だが、PyDevがコンソールビューを使用する代わりにそのような端末でプログラムを起動することができることに注意してください...(しかし、これはアイデアの世界だけであり、期限がないため、残念ながら、PyDev/Eclipseの中に入力しなくても、現在は単一の文字を取得することはできません)。

+0

ありがとうございました!とても有難い – Relaxed1

関連する問題