安装pynput库

python -m pip install pynput

对于每一种输入设备,它包含一个子包来控制该种设备

  • pynput.mouse: 包含控制和监控鼠标或触摸板的类
  • pynput.keyboard: 包含控制和监控键盘的类

鼠标模块

鼠标基本操作

  • 导入pynput控制鼠标的模块

    from pynput import mouse

  • 获取鼠标的操控对象

    control = mouse.Controller()

  • 获取当前鼠标的位置

    print(control.position)

  • 改变鼠标的位置

    control.position = (100, 100)

  • 移动鼠标的位置(x,y)

    control.move(10, 10)

  • 鼠标按键类型

    • 左键 mouse.Button.left
    • 右键 mouse.Button.right
    • 中键 mouse.Button.middle
  • 按下鼠标左键

    control.press(mouse.Button.left)

  • 释放鼠标左键

    control.release(mouse.Button.left)

  • 单击鼠标左键

    control.click(mouse.Button.left, 1)

  • 双击鼠标左键

    control.click(mouse.Button.left, 2)

  • 鼠标滚轮向上滚动

    control.scroll(0, -100)

  • 鼠标滚轮向下滚动

    control.scroll(0, 100)

鼠标事件监听

from pynput import mouse# 鼠标move监听
def on_move(x, y):print(f'Current position: ({x}, {y})')# 鼠标click监听
def on_click(x, y, button, pressed):print(f'Click position: ({x}, {y})')print(f'Click button: {button}')print(f'Click state: {"Pressed" if pressed else "Release"}')# 鼠标滚轮scroll监听
def on_scroll(x, y, dx, dy):print(f'Scroll position: ({x}, {y})')print(f'Scroll direction: ({dx}, {dy})')with mouse.Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:listener.join()

键盘模块

键盘模拟控制

  • 导入pynput控制键盘的模块

    from pynput import keyboard

  • 获取按键

    • 获取特殊按键,可以通过 keyboard.Key找到

      • shift keyboard.Key.shift
      • ctrl keyboard.Key.ctrl
      • alt keyboard.Key.alt
    • 获取普通按键
      可以通过keyboard.KeyCode.from_char'获取,特殊按键不可以,使用时会报ArgumentError`
    • 两者都可以使用keyboard.KeyCode.from_vk通过键盘的映射码来获取
    • 键位码表
  • 获取键盘操作对象

    control = keyboard.Controller()

  • 模拟按键操作

    • 按下a

      control.press(keyboard.KeyCode.from_char(“a”))

      control.press(“a”)

    • 释放a

      control.release(keyboard.KeyCode.from_char(“a”))

      control.release(“a”)

    • 同时按下shifta

      from pynput import keyboardcontrol = keyboard.Controller()
      with control.pressed(keyboard.Key.shift):control.press('a')control.release('a')
      
    • 注意点

      • 使用press()方法的时候需要release()进行扫尾释放

        keyboard.Controller.press('a')
        keyboard.Controller.release('a')
        
      • 使用pressed()方法的时候加上with封装,进入语句时顺序按下提供的按键,退出时逆序释放按键
        with keyboard.Controller.pressed(keyboard.Key.ctrl,keyboard.Key.shift,'s'):pass
        
    • 输出字符串’hello word.’

      from pynput import keyboardcontrol = keyboard.Controller()
      control.type('hello word.')
      

键盘事件监听

  • 官网示例

    from pynput import keyboarddef on_press(key):"""按下按键时执行。"""try:print('alphanumeric key {0} pressed'.format(key.char))except AttributeError:print('special key {0} pressed'.format(key))#通过属性判断按键类型。def on_release(key):"""松开按键时执行。"""print('{0} released'.format(key))if key == keyboard.Key.esc:# Stop listenerreturn False# Collect events until released
    with keyboard.Listener(on_press=on_press,on_release=on_release) as listener:listener.join()
    
    • 当两个函数中任意一个返回False(还有就是释放Exception或继承自Exception的异常)时,就会结束进程。
    • 可以用listener.start()和listener.stop()代替with语句。

python 控制键盘鼠标库pynput详解相关推荐

  1. python控制键盘鼠标库pynput基本操作

    pynput库 对于每一种输入设备,它包含一个子包来控制该种设备 包含控制和监控鼠标或触摸板的类 pynput.mouse 包含控制和监控键盘的类 pynput.keyboard: 鼠标模块 鼠标基本 ...

  2. python键盘上下左右控制_【322】python控制键盘鼠标:pynput

    Python控制键盘鼠标:pynput 地址:pynput - PyPI 这个库让你可以控制和监控输入设备. 对于每一种输入设备,它包含一个子包来控制和监控该种输入设备: pynput.mouse:包 ...

  3. Python BS4解析库用法详解

    Python BS4解析库用法详解 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据.Bea ...

  4. Python bs4解析库使用详解

    今天继续给大家介绍Python 爬虫相关知识,本文主要内容是Python bs4解析库使用详解. 一.Python bs4库简介与安装 bs4是Python的一个第三方库,主要用于从HTML或者是XM ...

  5. python中os库用法详解(总结)

    os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能. 具体步骤如下: 1. 导⼊os模块 import os 2. 使⽤ os 模块相关功能 os.函 ...

  6. python中dns库用法详解(DNS处理模块)

    dnspython是python 实现的一个dns场景的工具包. dnspython(http://www.dnspython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型 ...

  7. Python进度条库tqdm详解

    tqdm模块是python进度条库, 主要分为两种运行模式 基于迭代对象运行: tqdm(iterator) importtimefromtqdmimporttqdm,trange#trange(i) ...

  8. python中flask_caching库用法详解(缓存)

    为了尽量减少缓存穿透,并同时减少web的响应时间,可以针对那些需要一定时间才能获取结果的函数和那些不需要频繁更新的视图函数提供缓存服务,可以在一定的时间内直接返回结果而不是每次都需要计算或者从数据库中 ...

  9. python中openpyxl库用法详解

    openpyxl模块是一个读写Excel 文档的Python库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档. openpyxl.load_workbook(地址) - 打开 ...

最新文章

  1. eclipse或者myeclipse的代码提示功能
  2. JVM内存结构、内存模型 、对象模型那些事
  3. yum clean all之后出错_“之后”英语的4种表达方式?
  4. 销售易移动CRM助力制造业转型智能制造
  5. 在Win7中安装Oracle 10g时检测报错的解决办法
  6. 带你深入AI(4)- 目标检测领域:R-CNN,faster R-CNN,yolo,SSD, yoloV2
  7. php把数字转化字符串,php中把数字转化为字符串的方法有哪些?-PHP问题
  8. 表格列mouse经过时高亮显示
  9. zbb20170228_spring_tdt
  10. 文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型
  11. python的编程方式模块化_我的Python笔记·模块化编程(一)
  12. 验证GaussDB T 闪回事务查询功能;闪回表功能强劲闪回TRUNCATE
  13. python 的csr_Python scipy.sparse.csr_matrix()[csc_matrix()]
  14. 为什么Windows7打开项目的方式是灰的不能修改
  15. linux date 得到指定 datemonth 月的 开始一天 结束一天
  16. 微信开放平台_第三方平台授权流程_授权码
  17. 房地产大数据分析方法
  18. log4j配置(很详细)
  19. Salient Object Detection Driven by Fixation Prediction 论文解读
  20. ei检索的cpss_国际检索系统收录我校期刊

热门文章

  1. UML中的用例图、活动图、顺序图
  2. 东华助手 v1.6.5
  3. 计算机系统基础学习笔记(7)-缓冲区溢出攻击实验
  4. MMpose代码讲解之关键点Heatmap可视化
  5. 用opencv简单绘图
  6. C# 模拟鼠标移动和点击
  7. android pppd流程,pppd调试心得.md
  8. java ee jpi是什么,JPI 150、300、600RF、RJ什么意思
  9. 2008年会不会是Linux的桌面年
  10. 【Element-ui】el-table大数据量渲染卡顿问题