鍵盤監聽
需要用到keyboard模塊(pip install keyboard)
按鍵字符
#字符
'1'
'a'
...
#控制
'ctrl'
'alt'
'shift'
'enter'
'esc'
'f1'
...
#方向鍵
'up'
'down'
'left'
'right'
#組合按鍵
'ctrl'+'alt'+'a'
...
常用方法
wait()
監聽按鍵,如果沒設置按鍵,將會一直監聽這句之前的按鍵;如果設置了按鍵,那么在按下該按鍵后就會停止監聽,並執行后面的語句,舉例:
import keyboard print(0) keyboard.wait('a') #在按下a之前后面的語句都不會執行,下面同理 print(1) keyboard.wait('b') print(2) keyboard.wait('c') print(3) keyboard.wait() 結果: 0 1 2 3 #繼續監聽 #只有按順序按下abc(中間過程隨便按不干擾)才能輸出0123,但因為最后一個沒設置按鍵,所以會一直監聽下去
add_hotkey()
設置熱鍵,一般和wait()組合使用,在wait監聽下,當按下熱鍵時會執行對應函數,舉例:
import keyboard #監聽鍵盤 def test_a(): print('aaa') def test(x): print(x) if __name__ == '__main__': keyboard.add_hotkey('f1', test_a) #按f1輸出aaa keyboard.add_hotkey('ctrl+alt', test, args=('b',)) #按ctrl+alt輸出b keyboard.wait() #wait里也可以設置按鍵,說明當按到該鍵時結束
record()
記錄鍵盤事件,如果加上until參數,可以設置當按下某按鍵時結束監聽,和wait方法有點像,舉例:
import keyboard keyboard.add_hotkey('ctrl', print, args=('aaa',)) keyboard.add_hotkey('alt', print, args=('bbb',)) recorded = keyboard.record(until='esc') #當按下esc時結束按鍵監聽,並輸出所有按鍵事件 print(recorded) 結果為: aaa aaa bbb [KeyboardEvent(ctrl down), KeyboardEvent(ctrl up), KeyboardEvent(ctrl down), KeyboardEvent(ctrl up), KeyboardEvent(alt down), KeyboardEvent(alt up), KeyboardEvent(esc down)]
hook()
綁定所有按鍵事件,當只要有按鍵按下/松開時就會觸發的回調函數,舉例:
import keyboard def abc(x): print(x) print("111") keyboard.hook(abc) #按下任何按鍵時,都會調用abc,其中一定會傳一個值,就是鍵盤事件 keyboard.wait() 結果: KeyboardEvent(w down) 111 KeyboardEvent(w up) 111 KeyboardEvent(space down) 111 KeyboardEvent(space up) 111 KeyboardEvent(tab down) 111 KeyboardEvent(tab up) 111 KeyboardEvent(ctrl down) 111 ...
KeyboardEvent()
一個按鍵事件,里面有3個常用參數:event_type、scan_code、name,分別代表按鍵類型(down/up)、按鍵號(每個鍵都有對應的)和按鍵名,舉例:
import keyboard def abc(x): a = keyboard.KeyboardEvent('down', 28, 'enter') #按鍵事件a為按下enter鍵,第二個參數如果不知道每個按鍵的值就隨便寫, #如果想知道按鍵的值可以用hook綁定所有事件后,輸出x.scan_code即可 if x.event_type == 'down' and x.name == a.name: print("你按下了enter鍵") #當監聽的事件為enter鍵,且是按下的時候 keyboard.hook(abc) # keyboard.hook_key('enter', bcd) # recorded = keyboard.record(until='esc') keyboard.wait() 結果: 你按下了enter鍵 你按下了enter鍵
更多參考
https://pypi.org/project/keyboard/
鼠標、鍵盤監聽控制
這里介紹兩個模塊,一個是pyautogui模塊(pip install pyautogui),另一個是pynput(pip install pynput)
pyautogui基本使用
常用方法
position()
獲取鼠標位置,舉例:
import pyautogui as pag #監聽鼠標 x1, y1 = pag.position() print(x1, y1) #輸出鼠標當前位置
實例-結合鼠標鍵盤截圖
(按下兩次alt+ctrl來確定圖片左上角和右上角,然后截圖保存)
import keyboard #監聽鍵盤 import pyautogui as pag #監聽鼠標 from PIL import ImageGrab #截圖、讀取圖片、保存圖片 if keyboard.wait(hotkey='ctrl+alt') == None: x1, y1 = pag.position() if keyboard.wait(hotkey='ctrl+alt') == None: x2, y2 = pag.position() image = ImageGrab.grab((x1, y1, x2, y2)) image.save("screen.png")
click()
鼠標點擊控制,舉例:
import pyautogui pyautogui.click(button='right') #點擊鼠標右鍵 pyautogui.click(100, 100) #要在指定位置點擊左鍵
更多參考
pyautogui自動化控制鼠標鍵盤:https://blog.csdn.net/weixin_43430036/article/details/84650938
pyautogui控制鍵盤輸入:https://blog.csdn.net/qq_40379759/article/details/80427235
pynput基本使用
轉:https://www.jianshu.com/p/8e508c6a05ce
