簡體   English   中英

嘗試使用鍵盤或 pygame 模塊單獨或與任何其他數量的鍵盤輸入一起接受鍵盤輸入“R”

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

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