Pynput监听鼠标并生成代码用于执行

本文介绍了一种利用pynput库监听鼠标操作并自动生成Python代码的方法,通过记录鼠标移动、点击及滚动等动作,简化了自动化任务的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用pynput监听鼠标,并直接生成代码:

from pynput import mouse
from pynput.mouse import Button
import datetime

with open('/home/oliveryty/文档/监听鼠标.txt', 'a+') as f:
    f.write("from pynput.mouse import Button, Controller as mCtr")
    f.write("\n\n")
    f.write("import time")
    f.write("\n\n")
    f.write("mouse = mCtr()")
    f.write("\n\n")

def on_move(x, y):
    return 0  

def on_click(x, y, button, pressed):
    with open('/home/oliveryty/文档/监听鼠标.txt', 'a+') as f:
        if button == Button.left:
            f.write("\n")
            f.write(f'mouse.position = {(x, y)}')
            f.write("\n")
            f.write(f'{"mouse.press(Button.left)" if pressed else "mouse.release(Button.left)"}')
            f.write("\n")
            f.write("time.sleep(1)")
            f.write("\n")
        elif button == Button.right:
            f.write("\n")
            f.write(f'mouse.position = {(x, y)}')
            f.write("\n")
            f.write(f'{"mouse.press(Button.right)" if pressed else "mouse.release(Button.right)"}')
            f.write("\n")
            f.write("time.sleep(1)")
            f.write("\n")

def on_scroll(x, y, dx, dy):
    with open('/home/oliveryty/文档/监听鼠标.txt', 'a+') as f:
        f.write("\n")
        f.write(f'mouse.position = {(x, y)}')
        f.write("\n")
        f.write(f'mouse.scroll{(dx, dy)}')
        f.write("\n")
        f.write("time.sleep(1)")
        f.write("\n")

with mouse.Listener(
    on_move = on_move,
    on_click = on_click,
    on_scroll = on_scroll) as listener:
    listener.join()
    

执行上述代码,pynput将监听鼠标的点击动作和转动滚轴动作,作为日志记录到txt文本中。而生成的日志就是python代码。这样,将txt后缀改成py后,就可以直接执行了!!

下述代码就是上述代码自动生成的。


from pynput.mouse import Button, Controller as mCtr

import time

mouse = mCtr()


mouse.position = (412, 417)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (412, 417)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (414, 425)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (414, 430)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (414, 436)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (414, 437)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (414, 440)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (414, 442)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (239, 752)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (239, 752)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (269, 212)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (269, 212)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (375, 60)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (375, 60)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (395, 82)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (409, 110)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (528, 336)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (528, 336)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (781, 407)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (781, 407)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (781, 410)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (781, 414)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (780, 417)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (777, 421)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (776, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (775, 422)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (265, 15)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (265, 15)
mouse.release(Button.left)
time.sleep(1)


#记录到了右键
mouse.position = (356, 239)
mouse.press(Button.right)
time.sleep(1)

mouse.position = (356, 239)
mouse.release(Button.right)
time.sleep(1)

mouse.position = (426, 496)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (426, 496)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (467, 13)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (467, 13)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (397, 759)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (397, 759)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (541, 422)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (541, 424)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (541, 424)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (541, 424)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (573, 394)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (573, 392)
mouse.scroll(0, 1)
time.sleep(1)

mouse.position = (573, 392)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (573, 392)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (573, 392)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (573, 392)
mouse.scroll(0, -1)
time.sleep(1)

mouse.position = (1036, 18)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (1036, 18)
mouse.release(Button.left)
time.sleep(1)

mouse.position = (610, 459)
mouse.press(Button.left)
time.sleep(1)

mouse.position = (610, 459)
mouse.release(Button.left)
time.sleep(1)

 

之前学习pynput操控鼠标,光定位mouse.position就费老鼻子的事了。有了这个法子,直接生成代码,就问你服不服。

大家如果有简单的自动化需求,可以直接复制监听代码,在安装了python3环境并安装了pynput模块的情况下,直接执行。注意把txt文件的保存目录改成D盘,因为我是在fedora linux下运行的。即:with open('/home/oliveryty/文档/监听鼠标.txt', 'a+') as f:改成with open('D:/监听鼠标.txt', 'a+') as f: 。

当然,这里其实只生成了鼠标左右键的操作和转动滚轴的操作。另外转动滚轴,每次只记录一下,真正做成自动化程序的时候,可以把mouse.scroll(dx, dy)的dy值改成较大数值,方便看,也不用受限于time.sleep(1)造成的比实际操作慢的效果了。如果编写同时操控键盘的程序时,可以自行手工添加代码,并函数化或类化。

 

 

 

<think>好的,用户需要找一个用Python编写的连点器脚本或者键盘宏脚本。首先,我得确认用户的具体需求是什么。连点器通常用于自动点击鼠标,可能是在游戏或者自动化任务中使用。用户提到的是macOS系统,因为参考引用里提到了macOS的自动点击器项目。但用户现在想用Python来实现,可能需要跨平台或者更灵活的解决方案。 首先,Python有几个库可以控制鼠标和键盘,比如pyautogui和pynput。这些库在macOS上是否可用?需要检查一下。pyautogui是支持macOS的,但可能需要安装一些依赖,比如PyObjC。而pynput也是一个跨平台的库,同样适用于macOS。 接下来,用户可能需要代码示例。所以,我应该提供一个基本的自动点击脚本,使用pyautogui库,因为它相对简单。代码需要包括循环点击,设置间隔时间,以及一个停止机制,比如监听键盘事件来终止脚本。同时,要提醒用户注意权限问题,特别是在macOS上可能需要辅助功能权限。 然后,用户可能不知道如何安装这些库,所以需要给出安装命令,比如pip install pyautogui。同时,安全问题也很重要,脚本运行时用户可能需要快速停止,所以加入使用KeyboardInterrupt的方法,比如按Ctrl+C。 另外,用户可能想要更高级的功能,比如记录鼠标位置、调整点击频率或者处理键盘宏。这时候可以建议使用pynput库来监听和模拟键盘事件,或者结合两者来实现更复杂的自动化任务。 最后,生成相关问题,帮助用户进一步探索,比如如何调整点击间隔、处理权限问题,或者实现键盘宏。这些相关问题应该覆盖用户可能遇到的后续问题,帮助他们深入使用脚本。</think>以下是使用Python实现自动点击器(Auto Clicker)的示例代码,结合$pyautogui$库实现基础功能: ```python import pyautogui import time import keyboard # 设置点击间隔(秒) interval = 0.5 # 设置启停热键 start_stop_key = "F6" exit_key = "F7" print("Auto Clicker 已启动") print(f"按 {start_stop_key} 开始/停止") print(f"按 {exit_key} 退出") clicking = False while True: if keyboard.is_pressed(start_stop_key): clicking = not clicking print("状态:", "运行中" if clicking else "已暂停") time.sleep(0.5) # 防止按键抖动 if keyboard.is_pressed(exit_key): print("程序已退出") break if clicking: x, y = pyautogui.position() # 获取当前鼠标位置 pyautogui.click(x, y) # 执行鼠标点击 time.sleep(interval) ``` §§ 1. 需要安装依赖库: ```bash pip install pyautogui keyboard ``` 2. macOS系统可能需要启用辅助功能权限[^1] 3. 可通过修改$interval$变量调整点击频率 4. 紧急停止可直接移动鼠标到屏幕角落触发pyautogui的自动保护机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值