我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 pkdef on_press(key):    # 监听按键    key=str(key)[1]    print("按键为",key)#连接事件以及释放with pk.Listener(on_press=on_press) as pklistener:    pklistener.join()

侦听鼠标

import pynput.mouse as pmimport threadingdef on_click(x, y, button, pressed):    # 监听鼠标点击    if pressed:        print("按下坐标")        mxy="{},{}".format(x, y)        print(mxy)        print(button)    if not pressed:        # Stop listener        return Falsedef 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

键盘控制

from pynput.keyboard import Key, Controller as c_keyboardfrom pynput.mouse import Button, Controller as c_mousekeyboard = 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.Keykeyboard.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&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_keyboardfrom pynput.mouse import Button, Controller as c_mousemouse= 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)

来源地址:https://blog.csdn.net/qq_43981344/article/details/130645535

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在python中使用pynput库对鼠标、键盘进行监控

这篇文章将为大家详细讲解有关怎么在python中使用pynput库对鼠标、键盘进行监控,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释
2023-06-08

Python如何利用PyAutoGUI模块实现控制鼠标键盘

这篇文章主要介绍“Python如何利用PyAutoGUI模块实现控制鼠标键盘”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何利用PyAutoGUI模块实现控制鼠标键盘”文章能帮助大家解
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录