用 Python 控制你的鼠标和键盘
pynput 这个库,咱们可以实现对键盘和鼠标的全面掌控,听起来是不是有点酷?而且,比起其他库如 pygame 或 pyglet,pynput 在操作上更为简单,适合像咱们这种想快速搞定任务的技术人群。好了,废话不多说,马上开干!1. pynput 库的概述
pynput 库的概述pynput 是 Python 的一个库,专门用于控制和监控键盘和鼠标的输入操作。和一些图形界面库不同,它特别轻量,不需要 UI 支持,专注于输入设备操作,非常适合写一些小工具、自动化脚本等。pygame 这种主要用于游戏开发的库不同,pynput 更适合搞点儿自动化的小把戏,比如,自动回复、定时点击啥的,简直就是解放双手必备神器。2. 鼠标操作
鼠标控制
pynput.mouse 模块,并创建一个 Controller 对象来操控鼠标。初始化之后,你就可以随意移动鼠标、点击按钮了!from pynput.mouse import Button, Controller mouse = Controller()
获取和设置鼠标位置
position 属性一查便知。如果想直接定位鼠标位置,比如直接跑到屏幕中央,可以这样:# 获取当前位置
print("当前鼠标位置:", mouse.position)# 设置鼠标位置,比如屏幕中央(960, 540)
mouse.position = (960, 540)
print("鼠标已移动到:", mouse.position)
单击和双击操作
pynput 直接给我们提供了 click 方法。想象一下,如果你不想自己鼠标狂点,直接来段代码自动搞定吧!# 单击
mouse.click(Button.left, 1)# 双击
mouse.click(Button.left, 2)
滚轮滑动
scroll 方法让你可以自定义滚动步数。向上滚动?向下滚动?任你随心所欲!# 向上滚动
mouse.scroll(0, 2)# 向左滚动
mouse.scroll(-2, 0)
小贴士:记住不能同时在垂直和水平方向上滚动,pynput 目前不支持“对角线滚动”,一个方向一个方向来。
3. 鼠标监控
Listener 来监听事件,比如做一个记录鼠标动作的小工具就很方便。from pynput.mouse import Listener # 定义监听器事件
def on_move(x, y):
print(f"鼠标移动到 ({x}, {y})")def on_click(x, y, button, pressed):
if pressed:
print(f"鼠标 {button} 按下在 ({x}, {y})")
else:
print(f"鼠标 {button} 松开在 ({x}, {y})")def on_scroll(x, y, dx, dy):
print(f"鼠标滚动在 ({x}, {y}),方向 ({dx}, {dy})")# 开启监听
with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
listener.join()
自动停止监听
False 来停止监听。def on_click(x, y, button, pressed):
if not pressed:
# 条件触发停止
return False
非阻塞监听
pynput 允许你以非阻塞模式启动监听,这样代码不会卡住。listener = Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll)
listener.start()
# ...执行其他代码
listener.stop() # 随时可停止监听
4. 键盘操作
基本操作
Controller 类。以下是模拟键盘按键的简单操作:from pynput.keyboard import Key, Controller keyboard = Controller()
# 模拟按下一个字母
keyboard.press('a')
keyboard.release('a')
组合键操作
Ctrl+C、Alt+Tab 等。pynput 里,咱们可以直接用 Key 类来定义这些常见的组合键,非常方便!# 模拟按住 Ctrl 键并按下 'c'
keyboard.press(Key.ctrl)
keyboard.press('c')
keyboard.release('c')
keyboard.release(Key.ctrl)
注意:按组合键时,一定记得按住和释放的顺序,顺序错误会导致奇怪的行为,比如咱们的 Ctrl 键一直没松开,导致后面全成了 Ctrl+某键的操作😂。
5. 键盘监控
Listener 监听键盘的按下和松开动作。from pynput.keyboard import Listener def on_press(key):
print(f"按下: {key}")def on_release(key):
print(f"松开: {key}")
# 条件判断停止监听,比如按下 ESC
if key == Key.esc:
return False# 开启键盘监听
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
esc 键,监听就自动停止,这样我们也可以手动终止监听过程。pynput 是个相当强大且方便的库,用它来控制和监听鼠标键盘,轻松玩转你的输入设备。未来无论你是要做自动化测试、制作一些小工具,还是搞点有趣的“程序员恶作剧”,pynput 都能帮你轻松搞定。