pynput库操作鼠标

安装pynput库

pip install pynput

官方文档: https://pythonhosted.org/pynput/

鼠标控制

  1. 创建鼠标控制对象
mouse = Controller()
  1. 获取一次当前鼠标位置
position
- 返回值:tuple (x, y)
x,y=mouse.position#返回了一个位置坐标的元组
print("x方向鼠标位置:{},y方向鼠标位置:{}".format(x,y))
  1. 修改鼠标位置
mousePosition=mouse.position
print("修改前鼠标位置:{0}".format(mousePosition))
mouse.position=(666,666)#把鼠标位置设置为  (666,666)
mouseposition=mouse.position
print("修改后鼠标位置:{0}".format(mouseposition))
  1. 鼠标执行点击与弹起
print("3秒后点击鼠标停留的位置")
win32api.Sleep(3000)#休眠等待3秒
# 模拟左键点击与弹起操作
mouse.position=(666,666)#把鼠标位置设置为  (666,666)
mousePosition=mouse.position
print("即将被左键点击与弹起的鼠标位置:{0}".format(mousePosition))
mouse.press(Button.left)#左键按下
win32api.Sleep(50)#有些要求点击有一些延迟
mouse.release(Button.left)#左键弹起
# 模拟右键点击与弹起操作
print("即将被右键点击与弹起的鼠标位置:{0}".format(mousePosition))
mouse.press(Button.right)#右键按下
win32api.Sleep(50)#有些要求点击有一些延迟
mouse.release(Button.right)#右键弹起
  1. 鼠标点击封装调用
click(button, count=1)
- button (Button),鼠标按键类型:左键 mouse.Button.left,右键 mouse.Button.right,中键 mouse.Button.middle
- count (int),点击次数
mouse.position=(888,888)
mousePosition=mouse.position
mouse.click(Button.left,1)#鼠标左键点击1次,第一个参数表示左右键,第二个参数表示点击次数
def mzhClick(ButtonType,clickTimes,clickDelay):
    # 模拟左键点击延迟一段时间后再弹起的操作
    for i in range(clickTimes):
        mouse.press(ButtonType)#左键按下
        win32api.Sleep(clickDelay)#有些时候,我们的这个点击延迟可以加入随机数,这样看起来更接近真人的操作
        mouse.release(ButtonType)#左键弹起
mouse.position=(629,254)
mousePosition=mouse.position
mzhClick(Button.left,2,10)#双击,每次点击弹起延时10毫秒
  1. 移动鼠标的位置
mouse.move(10, 10)
  1. 鼠标滚轮滚动
mouse.scroll(0, -100)
mouse.scroll(0, 100)

示例:

from pynput.mouse import Button, Controller

mouse = Controller()

# Read pointer position
print('The current pointer position is {0}'.format(
    mouse.position))

# Set pointer position
mouse.position = (10, 20)
print('Now we have moved it to {0}'.format(
    mouse.position))

# Move pointer relative to current position
mouse.move(5, -5)

# Press and release
mouse.press(Button.left)
mouse.release(Button.left)

# Double click; this is different from pressing and releasing
# twice on Mac OSX
mouse.click(Button.left, 2)

# Scroll two steps down
mouse.scroll(0, 2)

鼠标监听

pynput.mouse.Listener(on_move=None, on_click=None, on_scroll=None)
  • on_move (callable)
  • on_click (callable)
  • on_scroll (callable)
listener.start()
try:
    with_statements()
finally:
    listener.stop()

鼠标移动监听

import win32api
import time
from pynput.mouse import Listener, Button

def mouseListener(on_move):#监听函数
    with Listener(on_move=on_move) as listener:#定义on_move回调函数用于在鼠标移动时生效
        listener.join()#添加监听器

def on_move(x, y):
    timeStruct = time.localtime(int(time.time()))  # 获得当前时间时间戳后转化为本地时间
    strTime = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct)  # 日期格式 2022-08-23 07:26:21
    print("{}鼠标坐标:{}".format(strTime,(x, y)))
    #win32api.Sleep(100)  #警告:不要取消注释这一行代码。不要尝试在这入延时,否则会真的让你的鼠标移动速度变慢,你可以类比理解为降低了你的鼠标DPI
    #也许你可以用上述特性来制作一个软件用于在fps游戏中压枪·······?
mouseListener(on_move)#调用我们写好的监听函数

鼠标点击监听

from pynput.mouse import Listener, Button

def mouseListener(on_click):
    with Listener(on_click=on_click) as listener:#定义on_click回调函数用于在鼠标点击时生效
        listener.join()

def on_click(x, y, button, pressed):
    print("鼠标位置为:{},执行操作为:{},是否点击或松开:{}".format((x, y), button, pressed))
mouseListener(on_click)

鼠标点击、滚动、拖动监听

from pynput.mouse import Listener, Button
from pynput import mouse

def mouseListener(on_move, on_click, on_scroll):
    with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
        listener.join()
def on_move(x, y):
    pass

def on_click(x, y, button, pressed):
    if button == mouse.Button.left:
        print('鼠标左键单击')
    elif button == mouse.Button.right:
        print('鼠标右键单击')
    else:
        print('鼠标滚轮按下,即将结束程序')
    print("鼠标坐标:{},鼠标操作为:{},鼠标按下弹起状态:{}".format((x, y), button, pressed))
    if button == Button.middle:
        return False

#其实这里滚动监听不知道为啥有点问题,我只能监听滚轮,大家有知道的可以评论区讨论分享一下
def on_scroll(x, y, dx, dy):
    print("鼠标位置为:{},滚轮上下滑动,1表示上滚,-1表示下滚:{}".format((x, y), (dx, dy)))

mouseListener(on_move, on_click, on_scroll)

官网示例:移动鼠标会显示其坐标,按下鼠标按键并松开后,程序结束。当三个函数任意一个返回False((还有就是释放Exception或继承自Exception的异常)时,就会结束进程。

from pynput.mouse import Listener

def on_move(x, y):
    print('Pointer moved to {0}'.format(
        (x, y)))

def on_click(x, y, button, pressed):
    print('{0} at {1}'.format(
        'Pressed' if pressed else 'Released',
        (x, y)))
    if not pressed:
        # Stop listener
        return False

def on_scroll(x, y, dx, dy):
    print('Scrolled {0}'.format(
        (x, y)))

# Collect events until released
with Listener(
        on_move=on_move,
        on_click=on_click,
        on_scroll=on_scroll) as listener:
    listener.join()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值