簡體   English   中英

檢測鍵是否被按下一次

[英]Detect if key was pressed once

我想做一個動作,只要我的f鍵被按下。 問題是它會向操作發送垃圾郵件。

import win32api

while True:
    f_keystate = win32api.GetAsyncKeyState(0x46)

    if f_keystate < 0:
        print("Pressed!")

我想要這個沒有“按下”。 被垃圾郵件但只打印一次。

您需要一個 state 變量來跟蹤按鍵在釋放后是否被按下。

f_pressed = False

while not f_pressed:
    f_pressed = win32api.GetAsyncKeyState(0x46) < 0

print("Pressed!")

因為在while循環中,當f鍵被按下時, GetAsyncKeyState會檢測到f鍵總是在按下的state中。 結果, print語句被重復調用。

試試下面的代碼,你會得到你想要的結果:

import win32api

while True:
    keystate = win32api.GetAsyncKeyState(0x46)&0x0001
    if keystate > 0:
       print('F pressed!')

我已經很晚了,但是在使用鍵盤模塊時我自己也遇到了同樣的問題。 這是我找到的解決方案,是的,它是異步的。

    if keyboard.is_pressed('f'):
        if checksPressed == 0:
            # run code
        checksPressed += 1
    else:
        checksPressed = 0

或者對於 win32api

if win32api.GetAsyncKeyState(0x46) < 0:
        if checksPressed == 0:
            # run code
        checksPressed += 1
    else:
        checksPressed = 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM