どれくらい長く押しても、キー "s"が押されたときに変数 "shot_pressed"を1だけ増やしたいと思います。しかし、結果は変数が増加し続けるということです。私が長く押すほど、変数の値は大きくなります。以下は私のコードの一部です。キーを押したときにちょうど1つ増えます
import keyboard
shot_pressed = 0
if keyboard.is_pressed('s'):
shot_pressed += 1
どれくらい長く押しても、キー "s"が押されたときに変数 "shot_pressed"を1だけ増やしたいと思います。しかし、結果は変数が増加し続けるということです。私が長く押すほど、変数の値は大きくなります。以下は私のコードの一部です。キーを押したときにちょうど1つ増えます
import keyboard
shot_pressed = 0
if keyboard.is_pressed('s'):
shot_pressed += 1
ファーストをお読み使用することができ、私は
import keyboard
shot_pressed = 0
while True:
if keyboard.is_pressed('s'):
shot_pressed += 1
print("shot_pressed %d times"%shot_pressed)
あなたのコードは、あなたが上記に書いたようにされていませんと仮定したが同様
「はい」の場合は、ここで問題の核となります。is_pressedは、キーが押されている間は常にTrueになります。したがってif
の条件は真となり、while
は何度も繰り返します。
これに対処する方法は2つあります。
1)was_pressed
変数inroduceので、同じメソッドを使用しますが、これは最初のis_pressed瞬間かどうかをチェック:より良いライブラリを使用
import keyboard
shot_pressed = 0
was_pressed = False
while True:
if keyboard.is_pressed('s'):
if not was_pressed:
shot_pressed += 1
print("shot_pressed %d times"%shot_pressed)
was_pressed = True
else:
was_pressed = False
2)。フックを設定することができますので、キー押下機能が呼び出されます(1回のプレスで1回のみ)。だから、コードは次のようになります。
import keyboard
shot_pressed = 0
def on_press_reaction(event):
global shot_pressed
if event.name == 's':
shot_pressed += 1
print("shot_pressed %d times"%shot_pressed)
keyboard.on_press(on_press_reaction)
while True:
pass
私は、そのモジュールを使用していないが、あなたはおそらくあなたがJavaScriptで望む同じことをしたいです。キーボード.KEY_DOWN is_pressedの代わりに。
https://github.com/boppreh/keyboard#keyboard.KEY_DOWN
おそらく、非同期としても、物事を処理する必要があります。
私にはわかりませんキーボードモジュールですが、あなたのコードに問題があるのは、プログラムが一度入力することです。プログラムはキーボードから次の入力を待つ必要があります。 while
ループを使用して、ユーザーからの入力を取得してみてください。
import keyboard
import time
shot_pressed = 0
try:
while True:
if keyboard.is_pressed("S"):
shot_pressed += 1
time.sleep(0.1)
print(sh)
except Exception as er:
pass
またはすべてがあなたがhttps://pypi.python.org/pypi/keyboard
セカンドを使用するように見えるのキー
try:
shot_pressed = 0
while True:
key.read_key()
if key.is_pressed("s"):
sh += 1
print(shot_pressed)
except Exception as er:
pass
なぜこれが答えか、睡眠が必要な理由などを説明してください。 また、あなたは印刷物を忘れました –
Do()あなたはループ遅延のために眠っている動詞が素早く動いているときに文字 "s"を押すと、変数の値が1つの圧力で1000に達するように急速に増加するので、 –
を使うことができます。 https://pypi.python.org/pypi/pynput –
ちょうどメモとして、キーが保持されている場合に最もキーボードドライバ(似WindowsおよびLinuxではなく、MacOSのわから)は、複数の 'press'と' release'イベントを送信するので、 –