python pyautogui+pynput鼠标键盘自动控制与监听

这篇具有很好参考价值的文章主要介绍了python pyautogui+pynput鼠标键盘自动控制与监听。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyAutoGUI

参考https://blog.csdn.net/hfy1237/article/details/127960423

官方文档 https://pyautogui.readthedocs.io/en/latest/

1、基本函数
常用函数列表
函数名 功能
基本 pyautogui.size() 返回包含分辨率的元组
pyautogui.PAUSE 每个函数的停顿时间,默认0.1s
pyautogui.FAILSAFE 是否开启防故障功能,默认True
键盘 pyautogui.press('键盘字符') 按下并松开指定按键
pyautogui.keyDown('键盘字符') 按下指定按键
pyautogui.keyUp('键盘字符') 松开指定按键
pyautogui.hotkey('键盘字符1', '键盘字符2') 按下多个指定键
鼠标 pyautogui.position() 返回当前鼠标当前位置的元组
pyautogui.moveTo(x,y,duration=1)    按绝对位置移动鼠标并设置移动时间
pyautogui.moveRel(x_rel,y_rel,duration=4)   按相对位置移动鼠标并设置移动时间
pyautogui.dragTo(x, y, duration=1)    按绝对位置拖动鼠标并设置移动时间
pyautogui.dragRel(x_rel, y_rel, duration=4)   按相对位置拖动鼠标并设置移动时间
pyautogui.click(x, y)  鼠标点击指定位置,默认左键
pyautogui.click(x, y, button='left') 鼠标单击左键
pyautogui.click(x, y, button='right') 鼠标单击右键
pyautogui.click(x, y, button='middle')   鼠标单击中间,即滚轮
pyautogui.doubleClick(10,10)  鼠标左键双击指定位置
pyautogui.rightClick(10,10) 鼠标右键双击指定位置
pyautogui.middleClick(10,10)  鼠标中键双击指定位置
pyautogui.scroll(10)  鼠标滚轮向上滚动10个单位
2、press(), keyDowm(),keyUp(),hotKey()支持的有效字符串列表如下:
类别
字母 'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
数字 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
符号 '\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', , ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~',
F键 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
数字键盘 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 
其他 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', , 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command', 'option', 'optionleft', 'optionright'

一般功能

pyautogui.position() # 鼠标当前坐标

pyautogui.size() # 获取屏幕尺寸 

pyautogui.onScreen(x, y) #判断指定坐标 (x,y) 是否在屏幕内

故障保险

pyautogui.PAUSE = 2.5 # 控制调用 PyAutoGUI 后的暂停时间(单位:秒)

pyautogui.FAILSAFE = True # 鼠标移动到左上角将引发一个 `pyautogui.FailSafeException `从而中断程序

鼠标控制

pyautogui.moveTo(x, y, duration=num_seconds) # 在 num_Second 秒内将鼠标**移动**到指定坐标

pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)  #  相对于鼠标当前位置移动鼠标

pyautogui.dragTo(x, y, duration=num_seconds) # 在 num_Second 秒内将鼠标拖动到指定坐标

pyautogui.dragRel(xOffset, yOffset, duration=num_seconds) # 相对于鼠标当前位置拖动鼠标

pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks,button = 'left') #调用click()只会让鼠标在当前位置用左键单击一次,但关键字参数可以改变这一点,button关键字参数可以left是middle或right。

#单独调用指定键的点击事件
pyautogui.rightClick(x=moveToX, y=moveToY)
pyautogui.middleClick(x=moveToX, y=moveToY)
pyautogui.doubleClick(x=moveToX, y=moveToY)
pyautogui.tripleClick(x=moveToX, y=moveToY)

#正数控制滚轮将向上滚动,负数控制滚轮将向下滚动
pyautogui.scroll(amount_to_scroll, x=moveToX, y=moveToY)
pyautogui.vscroll(amount_to_scroll) # 垂直滚动鼠标
pyautogui.hscroll(amount_to_scroll)  # 水平滚动鼠标
#单独调用鼠标的按下和松开事件 
pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

键盘控制

pyautogui.typewrite('Hello world!\n', interval=secs_between_keys) # 在键盘光标处输入指定文本

 pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys) # 传递密钥等

#键盘热键(如Ctrl-S或Ctrl-Shift-1)可以通过将键名称列表传递给hotkey()来完成:
pyautogui.hotkey('ctrl', 'c')  # ctrl-c 复制
pyautogui.hotkey('ctrl', 'v')  # ctrl-v 粘贴

# 单独调用按钮的点击事件和松开事件:
pyautogui.keyDown('键名称')
pyautogui.keyUp('键名称') 

消息框函数

pyautogui.alert('这将显示带有确定按钮的文本。')
pyautogui.confirm('这将显示带有确定和取消按钮的文本。')
pyautogui.prompt('这样用户就可以输入一个字符串,然后按确定。')
# 显示一个简单的消息框,其中包含文本和一个确定按钮。返回单击的按钮的文本
pyautogui.alert(text='', title='', button='OK')
# 显示带有确定和取消按钮的消息框。可以自定义按钮的数量和文本。返回单击的按钮的文本
pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])
# 显示带有文本输入和确定和取消按钮的消息框。返回输入的文本,如果单击了取消,则返回None。
pyautogui.prompt(text='', title='' , default='')
# 显示带有文本输入和确定和取消按钮的消息框。键入的字符显示为*。返回输入的文本,如果单击了取消,则返回None。
pyautogui.password(text='', title='', default='', mask='*')

截图功能

pyautogui.screenshot()  # 返回Pillow/PIL图像对象
pyautogui.screenshot('foo.png')  # 返回Pillow/PIL图像对象,并将其保存到文件
pyautogui.screenshot(region=(0,0, 300, 400))  # 捕获指定范围
pyautogui.locateOnScreen('looksLikeThis.png') #返回在当前界面找到第一个图标位置的元组 (left, top, width, height) 

LocateAllOnScreen()# 函数将返回屏幕上找到的所有位置的生成器

for i in pyautogui.locateAllOnScreen('looksLikeThis.png')

#返回屏幕上图像所在位置的XY坐标。

pyautogui.locateCenterOnScreen('looksLikeThis.png')  # 返回中心坐标 (898,423)

示例

案例获取鼠标的位置,方便复制我们定位的鼠标坐标点到代码中

import pyautogui
import time

获取鼠标位置

def get_mouse_positon():
  time.sleep(5) # 准备时间
  print('开始获取鼠标位置')
  try:
    for i in range(10):
      # Get and print the mouse coordinates.
      x, y = pyautogui.position()
      positionStr = '鼠标坐标点(X,Y)为:{},{}'.format(str(x).rjust(4), str(y).rjust(4))
      pix = pyautogui.screenshot().getpixel((x, y)) # 获取鼠标所在屏幕点的RGB颜色
      positionStr += ' RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(
        3) + ')'
      print(positionStr)
      time.sleep(0.5) # 停顿时间
  except:
    print('获取鼠标位置失败')

if __name__ == "__main__":
  get_mouse_positon()

pynput 监听

参考 https://blog.csdn.net/lidashent/article/details/121892655

监听按键

import pynput.keyboard as pk
def on_press(key):
    # 监听按键
    key=str(key)[1]
    print("按键为",key)

#连接事件以及释放

with pk.Listener(on_press=on_press) as pklistener:
    pklistener.join()

侦听鼠标

import pynput.mouse as pm
import threading
def on_click(x, y, button, pressed):
    # 监听鼠标点击
    if pressed:
        print("按下坐标")
        mxy="{},{}".format(x, y)
        print(mxy)
        print(button)
    if not pressed:
        # Stop listener
        return False
def ls_k_thread():
    while(1):
        with pm.Listener(on_click=on_click) as pmlistener:
            pmlistener.join()
def analyse_pic_thread():
    r = threading.Thread(target=ls_k_thread)
    r.start()
analyse_pic_thread()

安装pynput模块

pip install pynput
#使用ctrl+v 快捷粘贴时候用到
pip install pyperclip文章来源地址https://www.toymoban.com/news/detail-501018.html

键盘控制

from pynput.keyboard import Key, Controller as c_keyboard
from pynput.mouse import Button, Controller as c_mouse

keyboard = c_keyboard()
#字符与数字
keyboard.press('a')
keyboard.release('a')

keyboard.press('A')
keyboard.release('A')

keyboard.press('1')
keyboard.release('1')
#非数字与字母键 详情: https://pynput.readthedocs.io/en/latest/keyboard.html#pynput.keyboard.Key
keyboard.press(Key.enter);
keyboard.release(Key.enter);
#组合
##全选
keyboard.press(Key.ctrl)
keyboard.press('a')
time.sleep(2)
keyboard.release('a')
keyboard.release(Key.ctrl)
###或者
with keyboard .pressed(Key.ctrl):
 keyboard.press('a')
 keyboard.release('a')
##复制
seller_nick = 'www.baidu.com/a.php?a=a&amp;b=2'
pyperclip.copy('https://'+seller_nick.replace('amp;',''))
##粘贴
keyboard.press(Key.ctrl)
keyboard.press('v')
time.sleep(1)
keyboard.release('v')
keyboard.release(Key.ctrl)
##回车
keyboard.press(Key.enter);
keyboard.release(Key.enter);

鼠标控制

from pynput.keyboard import Key, Controller as c_keyboard
from pynput.mouse import Button, Controller as c_mouse

mouse= c_mouse()
#点击
mouse.click(Button.left, 2)
#双击
mouse.click(Button.left, 2)
##按下右键
mouse.press(Button.right)
##释放右键
mouse.release(Button.right)
#鼠标坐标
print(mouse.position) 
##x轴坐标
print(mouse.position[0]) 
##y轴坐标
print(mouse.position[1])
#移动
##移动到绝对坐标
mouse.position = (400, 38)
##相对当前坐标移动
mouse.move(300, 2)
#滑动
mouse.press(Button.left)
mouse.move(300, 2)
mouse.release(Button.left)

到了这里,关于python pyautogui+pynput鼠标键盘自动控制与监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

    Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

    🚀🚀🚀学会控制鼠标和键盘是实现自动化的捷径!🚀🚀🚀 pynput是第三方库,所以在使用pynput之前需要下载pynput包。 下载方式1: 在终端输入 pip install pynput 下载包 下载方式2: 进入pypi官网:https://pypi.org➡️搜索 pynput ➡️选择版本➡️点击pip install pynput 下载方式3: 点击

    2023年04月09日
    浏览(15)
  • python通过pyautogui库来控制鼠标和键盘

    python通过pyautogui库来控制鼠标和键盘

    PyAutoGUI是一个纯Python的GUI自动化工具,通过它可以用程序自动控制鼠标和键盘操作。它支持Windows, MacOS和Linux。 安装: 基本用法看代码,非常简单易用。 运行脚本的时候,MacOS会提示你打开系统偏好控制,要求允许运行脚本的程序控制电脑,允许即可。 先看一下屏幕坐标系:

    2024年02月09日
    浏览(11)
  • python使用pyautogui控制鼠标与键盘(无屏幕内容)

    python使用pyautogui控制鼠标与键盘(无屏幕内容)

            若是读者学过爬虫工具Selenium,对pyautogui必能快速上手,只需要不断实践复习即可熟练掌握。若是没学过当然没关系,我会以初学者的角度尽可能详细地向你解读新手遇到的许多问题。         请注意: 在本文章中,我会import pyautogui as auto                 在本

    2024年02月20日
    浏览(11)
  • PyAutoGUI Python 库,可以用于自动化鼠标和键盘的输入

    PyAutoGUI 是一个 Python 库,可以用于自动化鼠标和键盘的输入。它可以模拟人类的鼠标和键盘操作,例如单击、双击、拖动、按键、释放键等。PyAutoGUI 还提供了一些其他功能,例如屏幕截图和图像识别等。 以下是几个 PyAutoGUI 的典型案例和代码: 这些示例只是 PyAutoGUI 的一小部

    2024年02月10日
    浏览(10)
  • python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

    python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

    目录 鼠标操作 获取鼠标所在位置坐标 获取鼠标所在位置的RGB值 鼠标点击 鼠标按下和释放 鼠标移动 鼠标拖拽 滚轮滚动 键盘操作 输入英文字符 普通按键操作press 按下与抬起 组合键hotkey 持续按键hold 弹出对话框 alert confirm prompt password 获取鼠标所在位置坐标 获取鼠标所在位

    2024年02月12日
    浏览(15)
  • Pyautogui--键盘&鼠标控制工具

    Pyautogui--键盘&鼠标控制工具

    一、安装教程(Ubuntu 20.04) 一般这样就可以了 二、使用教程 屏幕上的位置由X和Y坐标表示。坐标从0开始 防止程序出问题,一般要在执行完后先停几秒 移动时间为1s 按下鼠标左键移动鼠标。 下面的函数都可以用click()代替,只是方便阅读 没有什么实际作用,只是让操作看起来更

    2024年02月09日
    浏览(19)
  • 【Python】监听键盘鼠标,基于pynput库

    目录 前言 首先放上官网链接 示例代码 模拟输入 监控输入 按键与鼠标宏 测试时的问题:按键按下不弹起的bug 键盘输入我们第一时间会想到win32api,这货还行,就是稍微繁琐了点,底层了点 Windows平台Python编程必会模块之pywin32_顺其自然~的博客-CSDN博客_python pywin32 如果想监听

    2024年02月09日
    浏览(9)
  • 怎样控制键盘按键自动填写网页表单

    怎样控制键盘按键自动填写网页表单

    浏览器中使用模拟键盘按键填写网页表单,不但可以完成数据输入,输入时还能真实地 触发键盘元素绑定的键盘事件 。 打开木头浏览器的工具菜单,进入项目管理容器,创建“填写内容”步骤,并打开百度网站测试。 1、输入键盘对应的字符,包括字母、数字和符号,但不

    2024年02月09日
    浏览(9)
  • Python的pyautogui库(鼠标,键盘操作篇)

    Python的pyautogui库(鼠标,键盘操作篇)

    图片操作篇可以观看https://blog.csdn.net/m0_61741706/article/details/126898616 pyautogui库可以模仿人去点击输出和键盘,相比selenium库,pyautogui库更方便,更便捷 下载就用pip直接下载,后者用清华源下载  出现这样就是下载成功 之后引入库,并判断电脑屏幕的分辨率 接下来是控制鼠标移

    2024年02月12日
    浏览(12)
  • 如何通过pynput与日志记录实现键盘、鼠标的监听行为?,字节跳动Python内部学习资料泄露

    如何通过pynput与日志记录实现键盘、鼠标的监听行为?,字节跳动Python内部学习资料泄露

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新Python全套学习资料》,初

    2024年04月26日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包