[英]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.