用 Python 控制你的鼠标和键盘

科技   2024-10-30 15:58   四川  
嗨,大家好!今天咱们来聊聊怎么用 Python 操控你的鼠标和键盘,轻松“接管”你的电脑。
通过 pynput 这个库,咱们可以实现对键盘和鼠标的全面掌控,听起来是不是有点酷?而且,比起其他库如 pygamepygletpynput 在操作上更为简单,适合像咱们这种想快速搞定任务的技术人群。好了,废话不多说,马上开干!

1. 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 = (960540)
print("鼠标已移动到:", mouse.position)
单击和双击操作
这里的单击和双击都是小儿科,pynput 直接给我们提供了 click 方法。想象一下,如果你不想自己鼠标狂点,直接来段代码自动搞定吧!
# 单击
mouse.click(Button.left, 1)

# 双击
mouse.click(Button.left, 2)

滚轮滑动

除了点击,滚动也是基本操作,scroll 方法让你可以自定义滚动步数。向上滚动?向下滚动?任你随心所欲!
# 向上滚动
mouse.scroll(02)

# 向左滚动
mouse.scroll(-20)
小贴士:记住不能同时在垂直和水平方向上滚动,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+CAlt+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 键,监听就自动停止,这样我们也可以手动终止监听过程。

OK,总结一下:pynput 是个相当强大且方便的库,用它来控制和监听鼠标键盘,轻松玩转你的输入设备。未来无论你是要做自动化测试、制作一些小工具,还是搞点有趣的“程序员恶作剧”,pynput 都能帮你轻松搞定。
有时候你会发现,这种小工具可能比你写的业务代码还有趣😏。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。

🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》


资料包含了《IDEA视频教程》《最全python面试题库》《最全项目实战源码及视频》《毕业设计系统源码》,总量高达650GB全部免费领取!全面满足各个阶段程序员的学习需求

Python技术迷
回复:python,领取Python面试题。分享AI编程,AI工具,Python技术栈,Python教程,Python编程视频,Pycharm项目,Python爬虫,Python数据分析,Python核心技术,Python量化交易。
 最新文章