mouse:顧名思義,是控制鼠標的模塊,本篇不打算介紹,有興趣可以看官網mouse
keyboard:同樣,是控制鍵盤的模塊,可以完全控制鍵盤,本篇不打算介紹,源碼很少,有興趣可以看官網keyboard
一.介紹
pynput這個庫讓你可以控制和監控輸入設備,它包含一個子模塊來控制和監控該種輸入設備:
-
pynput.mouse:包含控制和監控鼠標或者觸摸板的類。
-
pynput.keyboard:包含控制和監控鍵盤的類。
兩個子模塊的結構,兩者結構相同
二.實例
2.1 pynput.mouse

from pynput.mouse import Button, Controller,Listener # Controller類 m = Controller() print('鼠標的坐標:{0}'.format(m.position)) m.position = (500, 200) print('設置鼠標的坐標:{0}'.format(m.position)) # 相對於當前位置移動鼠標 m.move(m.position[0],m.position[1]) # 按下鼠標左鍵以及松開鼠標左鍵,按下並不是點擊 m.press(Button.left) m.release(Button.left) #雙擊鼠標右鍵 m.click(Button.right, 2) #滾動 m.scroll(0, 2) # Listener類,監聽鼠標事件 def on_move(x, y): print('移動到了:{0}'.format((x, y))) def on_click(x, y, button, pressed): print('{0} at {1}'.format('按下' if pressed else '松開',(x, y))) if not pressed: # 停止監聽 return False # 監聽滾動事件 def on_scroll(x, y, dx, dy): print('滾動到: {0}'.format((x, y))) with Listener(on_move=on_move,on_click=on_click,on_scroll=on_scroll) as listener: listener.join()
運行結果:
2.2 pynput.keyboard
keyboard是支持線程的

from pynput.keyboard import Key, Controller,Listener keyboard = Controller() # 按下空格和釋放空格 keyboard.press(Key.space) keyboard.release(Key.space) # 按下a鍵和釋放a鍵 keyboard.press('a') keyboard.release('a') # 按下shift,但是物理端不換,只對本次設置有效 with keyboard.pressed(Key.shift): keyboard.press('a') keyboard.release('a') keyboard.press('b') keyboard.type('Hello World') def on_press(key): print('{0} 被按下'.format(key)) def on_release(key): print('{0} 被釋放'.format(key)) if key == Key.esc: return False # 創建監聽 with Listener(on_press=on_press,on_release=on_release) as listener: listener.join()
運行結果:
reference: pynput