[英]Trying to accept the keyboard input 'R' alone or along side any other amount of keyboard inputs using either keyboard or pygame modules
import keyboard
import pygame
import mouse
import time
def press_X():
time.sleep(0.2)
keyboard.press('x')
time.sleep(0.6)
keyboard.release('x')
print('Command Executed - press_X')
#SA_R_X V_1.0
#------------------------------------------
while True:
try:
keyboard.add_hotkey('r', press_X)
time.sleep(0.5)
break
except:
keyboard.add_hotkey('r', press_X)
time.sleep(0.5)
break
問題是代碼無法檢測到當我按住“w”和/或“空格”時是否按下了“r”...(實際上是任何鍵)
我嘗試使用 try and except 來處理任意鍵 + 'r' 的組合。 但它沒有用。 我所需要的只是讓代碼能夠檢測到“r”輸入,即使我同時按下/按住另一個鍵也是如此。 然后,代碼等待 0.2 秒,然后按住“x”鍵 0.6 秒並松開。 感謝您提供任何幫助,如果您對我哪里出錯以及如何修復它進行了簡短的解釋,那將非常有幫助。
可以在此處找到此模塊的文檔。 在這里可以找到所有相關信息。
根據我的理解,最好的方法是使用替代 function。如果您希望程序繼續運行,即使沒有按下鍵,那么我建議使用keyboard.on_press_key()
function。這將意味着您的程序的 rest 仍然可以運行,並且您的press_X()
function 可以作為回調運行。 下面是如何實現此代碼的示例。
import keyboard
import pygame
import mouse
import time
class App:
running = True
def press_X():
time.sleep(0.2)
keyboard.press('x')
time.sleep(0.6)
keyboard.release('x')
print('Command Executed - press_X')
App.running = False
#SA_R_X V_1.0
#------------------------------------------
keyboard.on_press_key('r', lambda x: press_X()) ## Adds an event listener for the r key
## This will stop execution if there is no code after this point
如果你想讓它停止程序並等待r
鍵被按下,那么你可以使用keyboard.wait()
。 這基本上會暫停您的程序,直到按下該鍵,然后您的 function 將運行。 例如,要替換keyboard.on_press_key('r', lambda x: press_X())
:
keyboard.wait('r')
press_X()
據我了解, keyboard.add_hotkey()
在您的情況下不起作用,因為它正在尋找被按下的鍵的精確組合,例如Ctrl+C
,並且如果僅按下熱鍵中的鍵,則只會 go 。
我希望這會有所幫助,祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.