在 Python 中檢測鍵擊
如果你需要訪問鍵盤等輸入裝置等硬體,Python 中的一些模組可以讓你的生活變得更加輕鬆。使用這樣的模組,你可以輕鬆地執行你想要的任務,而無需處理系統的複雜性。
在本文中,你將學習如何使用 Python 中的模組來檢測按鍵。在 Python 中用於檢測按鍵的模組有很多,其中,最受歡迎和使用最廣泛的兩個模組是 keyboard
和 pynput
。
在 Python 中使用 Python 中的 keyboard
模組檢測鍵擊
keyboard
模組允許我們完全控制鍵盤,並帶有各種預定義的方法供我們選擇。這些方法使我們更容易使用鍵盤,並檢測使用者在鍵盤上的物理按鍵。
要安裝 keyboard
模組,請在命令提示符或終端內執行以下命令。
pip3 install keyboard
首先,你必須將 keyboard
模組匯入到程式中。這裡,我們使用 Python 中的三個方法來檢測按鍵,分別是 read_key()
,is_pressed()
和 on_press_key()
。
import keyboard
while True:
if keyboard.read_key() == "p":
print("You pressed p")
break
while True:
if keyboard.is_pressed("q"):
print("You pressed q")
break
keyboard.on_press_key("r", lambda _:print("You pressed r"))
輸出:
You pressed p
You pressed q
You pressed r
read_key()
會讀取使用者在鍵盤上按下的鍵,如果是你想要的那個鍵,在本例中是 p
,它會列印出 You pressed p
的資訊。read_key()
函式返回一個字元。
is_pressed()
函式接收一個字元作為輸入,如果它與使用者按下的鍵相匹配,它將返回 True
,否則返回 False
。
on_press_key()
需要兩個引數作為輸入,第一個是字元,第二個是函式。如果使用者按下了與 on_press_key()
函式第一個引數指定的鍵相匹配的鍵,它只會執行你作為第二個引數傳遞進來的函式。
在 Python 中使用 Python 中的 pynput
模組檢測鍵擊
pynput
模組是用來檢測和控制輸入裝置的,主要是滑鼠和鍵盤。但在本教程中,你將只看到如何使用這個模組來檢測鍵盤上的按鍵。在使用這個模組之前,你首先要用下面的命令安裝它。
pip3 install pynput
要使用這個模組來檢測按鍵,你首先要從 pynput
模組中匯入 keyboard
。
from pynput import keyboard
def on_press(key):
try:
print('Alphanumeric key pressed: {0} '.format(
key.char))
except AttributeError:
print('special key pressed: {0}'.format(
key))
def on_release(key):
print('Key released: {0}'.format(
key))
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
輸出:
Alphanumeric key pressed: a
Key released: 'a'
Alphanumeric key pressed: b
Key released: 'b'
special key pressed: Key.ctrl_l
Key released: Key.ctrl_l
請注意,上面的輸出可能會根據使用者按下的按鍵而有所不同。
為了檢測按鍵,我們定義了兩個函式,on_press
和 on_release
。當使用者按下鍵盤上的某個按鍵時,函式 on_press
將被執行,當使用者釋放該按鍵時,on_release
函式將被執行。
這兩個函式都只是將使用者按下和釋放的按鍵列印到控制檯視窗中。你可以根據自己的需求改變這兩個函式的實現方式。
然後在最後,我們有一個偵聽器,它將監聽鍵盤事件,並相應地執行 on_press
和 on_release
函式。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn