2017-08-16 3 views
0

msvcrtモジュールをPythonで使用したいが、それを動作させることはできない。
私はウィンドウズ10にいくつかの「アクティブなキーボード」を持っています(azertyからqwertyに変更できます)。Python3以外は何もダウンロードしませんでした。私はそれについて知らない)。pythonを使用したキープレスの特定msvcrt

私がしたいのは簡単です - キーを押した後、押されたキーに従って何かをします(私はそのキーを識別するためにコンピュータが必要です)。

は、私は次のコードを使用して、それを試してみました:

import msvcrt 
while 1:      #is that necessary? 
    char = msvcrt.getch() 
    if char == ???   #that's what I'm struggling with 
     print("yay") 
    else: 
     print("nope") 

が、私は単に私のキーを「コール」する方法がわかりません。私は例えば'\r'char(13)、ASCIIコードなどを試しましたが、これらのどれもうまくいきませんでした。私はそれが間違っていると考えています - つまり、 "正しい"キーが押されたにもかかわらず、私は決して "やめ"を得ることはできませんでした。

ありがとうございます!

+0

の可能性のある重複した[キープレスを読み取るためのPythonの方法?](https://stackoverflow.com/questions/12175964/python-method-for-reading-keypress) – Chris

+0

もちろん実験する一つの方法は、印刷することです特定のキーを押すと 'getch()'が返す値を取り出します。 – holdenweb

答えて

0

望んすなわち、キーの前にあなたはbを付加する必要があります

char = char = msvcrt.getch() 
if char == b"\r": 
    print("yay") 
else: 
    print("nope") 

Python 3.3 documentation状態:

バイトリテラルは常に 'B' または 'B' が付いています。 str型ではなくbytes型のインスタンスを生成します。 ASCII文字のみを含むことができます。 128以上の数値のバイトは、エスケープで表現する必要があります。

希望のキーを押した後に、msvcrt.getch()の出力を見て、自分で簡単に確認できます。

>>> msvcrt.getch() # I pressed Enter 
b'\r' 
>>> msvcrt.getch() # I pressed SPACE 
b' ' 
>>> msvcrt.getch() # I pressed BACKSPACE 
b'\x08' 
関連する問題