Pynput基础使用

仅供自用查询,有疑问评论区留言。

pynput安装

pip install pynput

鼠标控制

from pynput.mouse import Controller,Button

pynput库中的mouse模块是鼠标控制模块

创建鼠标控制对象

mouse = Controller()
获取或设置鼠标位置

mouse.Controller中为我们提供了方法来获取和设置鼠标位置信息

# 获取鼠标位置
import pynput
from pynput.mouse import Controller,Button
mouse=Controller()
mouseposition = mouse.position
print("鼠标当前的位置是:{0}".format(mouseposition))

你可以看出返回的是一个元组,所以我们可以用解析式将他解析开

# 获取鼠标位置
x,y=mouse.position
print("鼠标x轴当前的位置是:{},鼠标y轴当前的位置是:{}".format(x,y))

我们可以通过对方法赋值的方式来修改鼠标位置

# 修改鼠标位置
mouseposition=mouse.position
print("修改前鼠标位置:{0}".format(mouseposition))
mouse.position=(490,500)
mouseposition=mouse.position
print("修改后鼠标位置:{0}".format(mouseposition))
鼠标执行点击和松开操作

mouse.Controller中为我们提供了点击和松开操作
Button模块为我们提供了左键,右键,中键操作

from time import sleep
print("请在2秒内移动到需要点击的位置。")
sleep(2)
mousePosition=mouse.position
print("需要点击的位置是:{0}".format(mousePosition))
  • 模拟鼠标点击
# 模拟左键点击操作
mouse.position=(320,810)
mousePosition=mouse.position
mouse.press(Button.left)
mouse.release(Button.left)
# 模拟右键点击操作
mouse.position=(320,810)
mousePosition=mouse.position
mouse.press(Button.right)
mouse.release(Button.right)

mouse.Controller中为我们提供了点击封装。有两个参数,参数1:需要点击的按键,参数2:需要点击的次数

mouse.position=(320,810)
mousePosition=mouse.position
mouse.click(Button.left,1)
print("文件打开成功。")

鼠标监听

需要用到的模块:

Listener用于鼠标监听模块

from pynput.mouse import  Listener,Button

监听创建方法

def mouseListener():
    with Listener() as listener:
        listener.join()

创建鼠标移动监听

# 此程序需要放到IDLE或者DOC模式下执行
from pynput.mouse import  Listener,Button

def mouseListener(on_move):
    with Listener(on_move=on_move) as listener:
        listener.join()
        
        
def on_move(x,y):
    print("当前鼠标位置:{0}".format((x,y)))
    
if __name__ == '__main__':
    mouseListener(on_move)

鼠标点击事件

# 此程序需要放到IDLE或者DOC模式下执行
from pynput.mouse import Listener, Button


def mouseListener(on_click):
    with Listener(on_click=on_click) as listener:
        listener.join()


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


if __name__ == '__main__':
    mouseListener(on_click)

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

# 此程序需要放到IDLE或者DOC模式下执行
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
#     print("当前鼠标位置:{0}".format((x,y)))    
    
def on_click(x, y, button, pressed):
    if button == mouse.Button.left:
            print('left was pressed!')
    elif button == mouse.Button.right:
        print('right was pressed!')
    else:
        print('mid was pressed!')
    print("鼠标位置为:{},执行操作为:{},是否点击或松开:{}".format((x, y), button, pressed))
    if button == Button.middle:
        return False

    
def on_scroll(x,y,dx,dy):
    print("鼠标位置为:{},滑动坐标:{}".format((x,y),(dx,dy)))
    
    
if __name__ == '__main__':
    mouseListener(on_move,on_click,on_scroll)

键盘控制

需要的模块

pynput库中提供了keyboard键盘控制模块

Controller这个对象用来创建控制对象

key这个提供键盘操作

创建键盘控制对象

from pynput.keyboard import Controller, Key
keyboard =Controller()

键盘按下

pynput.keyboard.Controller提供了点击和松开操作

import time
mouse.position=(320,810)
mousePosition=mouse.position
mouse.click(Button.left,1)
print("文件打开成功。")
time.sleep(3)

from pynput.keyboard import Controller, Key
keyboard =Controller()
keyboard.press("a")
keyboard.release("a")
keyboard.press("A")
keyboard.release("A")

特殊按键操作

# 按下空格
keyboard.press(Key.space)
keyboard.release(Key.space)

请添加图片描述

键盘组合键优化

# 切换界面
with keyboard.pressed(Key.alt):
    keyboard.press(Key.tab)
    keyboard.release(Key.tab)

键盘字符串输出

keyboard提供了type方法用于键盘输出一整个字符串

keyboard.type("输出字符!")

特殊符号输出

keyboard提供了touch方法使我们快速方便输入,参数1:需要输入的符号,参数2:是否输入(True or False)

keyboard.touch("&",True)

键盘监听

需要的模块

pynput库中的keyboard模块是键盘监听模块

Listener 用于鼠标监听模块(使用方法类似open函数)

Key提供鼠标操作

无需创建对象

from pynput.keyboard import Listener,Key

键盘监听方法

def keyboardListener():
    with Listener() as listener:
        listener.join()

键盘输入监听

键盘按下
# 此程序需要放到IDLE或者DOC模式下执行
from pynput.keyboard import Listener, Key


def keyboardListener(on_press):
    with Listener(on_press=on_press) as listener:
        listener.join()


def on_press(key):
    print("当前按下的是:{0}".format(key))
    

if __name__ == '__main__':
    keyboardListener(on_press)
键盘释放
# 此程序需要放到IDLE或者DOC模式下执行
from pynput import keyboard
from pynput.keyboard import Listener, Key


def keyboardListener(on_press, on_release):
    with Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()


def on_press(key):
    print("当前按下的是:{0}".format(key))
    print(f'{key} :pushed') 

def on_release(key):
# 按esc键退出
    if key == keyboard.Key.esc:
        return False
    else:
        print("当前松开的是:{0}".format(key))


if __name__ == '__main__':
    keyboardListener(on_press, on_release)

监听鼠标键盘并写入工作日志

from pynput import keyboard, mouse
from loguru import logger
from threading import Thread
# 定义日志文件
logger.add('写入日志.log')
def on_press(key):
    logger.debug(f'{key} :pushed')
def on_release(key):
    if key == keyboard.Key.esc:
        return False
# 定义键盘监听线程
def press_thread():
    with keyboard.Listener(on_press=on_press, on_release=on_release) as lsn:
        lsn.join()
def on_click(x, y, button, pressed):
    if button == mouse.Button.left:
        logger.debug('left was pressed!')
    elif button == mouse.Button.right:
        logger.debug('right was pressed!')
    else:
        return False
# 定义鼠标监听线程
def click_thread():
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()
if __name__ == '__main__':
    # 起两个线程分别监控键盘和鼠标
    t1 = Thread(target=press_thread())
    t2 = Thread(target=click_thread())
    t1.start()
    t2.start()
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐