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()
    

    来源:牧文山

    物联沃分享整理
    物联沃-IOTWORD物联网 » Pynput基础使用

    发表评论