我在這裏有一個悖論。我使用GetKeyState爲了檢索賦予vk_code的狀態。我已經開發了兩個函數來協助我的任務:如何在while循環中只執行一個按鍵? (PyWin32)
import win32api
def get_key_state(vk_code):
state = int(win32api.GetKeyState(vk_code))
if state == 1 or state == -127:
return 1 # Key is on.
elif state == 0 or state == -128:
return 0 # Key is off.
def press_key(vk_code):
state = int(win32api.GetKeyState(vk_code))
if state == -127 or state == -128:
return 1 # Key was pressed.
else:
return 0 # Key was released.
的state
從0開始的值,然後同時給予鍵被按下時,它將變爲-127,然後當我釋放,它更改爲1,然後當鑰匙再次按住,它變爲-128,最後它得到回0
當我使用press_key主循環裏面,像這樣:
if __name__ == "__main__":
while True:
p_key = 80
if press_key(p_key):
print("P key was pressed.")
當按下並釋放按鍵時,我會得到以下輸出:
我怎樣才能獲得按鍵只有一次如果在while循環?就像這樣:
但沒有打破整個循環。觀察:我知道我在這裏重新發明輪子(因爲我可以使用PyHook或其他東西),但我真的很想知道它!我希望只在主循環內觸發一次「事件」(即使按住鍵),但我無法掌握邏輯。
哦,你解決它沒有使用時間:o。我印象深刻。這是我沒有拿出哈哈的確切邏輯。 –