Python键鼠控制之PyAutoGUI方法

前言

   PyAutoGUI 是一个 Python 库,用于在桌面应用程序中自动化鼠标和键盘操作。它提供了一组简单而强大的方法,使得开发者可以编写脚本来模拟用户的鼠标点击、键盘输入以及屏幕截图等操作。PyAutoGUI 可以用于自动化重复性任务、测试 GUI 应用程序、创建自定义的自动化工具等场景。

以下是 PyAutoGUI 的一些主要特点:

  1. 跨平台性:PyAutoGUI 可以在 Windows、macOS 和 Linux 上运行,并提供了一致的 API接口,使得开发者可以编写跨平台的自动化脚本。
  2. 鼠标和键盘控制:PyAutoGUI 提供了丰富的方法来模拟鼠标移动、点击、拖拽以及键盘输入等操作,使得可以轻松地自动化各种基于 GUI的任务。
  3. 屏幕信息和截图:PyAutoGUI 支持获取屏幕大小、鼠标位置等信息,并可以对屏幕进行截图、图像识别等操作,方便进行自动化任务的处理。
  4. 灵活性和易用性:PyAutoGUI 的方法设计简单直观,使用起来非常方便,同时提供了一些参数来定制操作的行为,满足不同场景下的需求。

PyAutoGUI官方文档

安装命令:pip install pyautogui

一、屏幕信息

import pyautogui# 获取屏幕尺寸
screen_size = pyautogui.size()
print(screen_size)
# 结果:Size(width=1920, height=1080)width, height = pyautogui.size()
print(width, height)
# 结果:1920 1080# 获取鼠标当前位置
mouse_position = pyautogui.position()
print(mouse_position)
# 结果:Point(x=960, y=540)# 判断坐标是否在屏幕范围内(范围内) onScreen(x, y)
onscreen = pyautogui.onScreen(100, 200)
print(onscreen)
# 结果:True# 判断坐标是否在屏幕范围内(范围外)
onscreen = pyautogui.onScreen(100, 4000)
print(onscreen)
# 结果:False

二、鼠标操作

  • 鼠标移动
import pyautogui# 将鼠标移动到屏幕坐标 (x=200, y=300) 的位置,移动过程耗时 1 秒钟
pyautogui.moveTo(200, 300, duration=1)# 相对于当前鼠标位置,向右移动 200 像素,向下移动 500 像素,移动过程耗时 1 秒钟
pyautogui.moveRel(200, 500, duration=1)# 相对于当前鼠标位置,向左移动 200 像素,向上移动 500 像素,移动过程耗时 1 秒钟
pyautogui.moveRel(-200, -500, duration=1)
  • 鼠标点击

click(x=None, y=None, button=‘left’, clicks=1, interval=0.0)

    模拟鼠标单击操作。如果指定了 (x, y) 坐标,则会先将鼠标移动到该坐标,然后进行单击操作,默认使用左键单击。clicks 参数指定单击次数,interval 指定单击之间的间隔时间。

import pyautogui# 在屏幕坐标 (x=100, y=100) 的位置点击鼠标左键,点击过程耗时 1 秒钟
pyautogui.click(100, 100, duration=1)# 在屏幕坐标 (100, 100) 的位置点击鼠标左键两次
pyautogui.click(100, 100, clicks=2)# 在屏幕坐标 (100, 100) 的位置点击鼠标左键两次,且点击间隔时间为 3 秒钟
pyautogui.click(100, 100, clicks=2, interval=3)# 在屏幕坐标 (100, 100) 的位置点击鼠标左键,使用 button='left' 指定左键
pyautogui.click(100, 100, button='left')# 在屏幕坐标 (100, 200) 的位置点击鼠标右键,使用 button='right' 指定右键
pyautogui.click(100, 200, button='right')# 在屏幕坐标 (100, 300) 的位置点击鼠标中键,使用 button='middle' 指定中键
pyautogui.click(100, 300, button='middle')
  • 鼠标双击

doubleClick(x=None, y=None, button=‘left’, interval=0.0)

    模拟鼠标双击操作,参数意义与 click() 方法类似。

import pyautogui# 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标左键
pyautogui.doubleClick(100, 100)# 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标右键
pyautogui.doubleClick(100, 100, button='right')# 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标中键
pyautogui.doubleClick(100, 100, button='middle')
  • 鼠标按压释放
import pyautogui# 鼠标移动代码...# 模拟按下鼠标按钮,当前是左键。这个函数会让鼠标一直保持按下状态
pyautogui.mouseDown()# 释放之前按下的鼠标按钮,使其恢复弹起状态
pyautogui.mouseUp()
  • 鼠标拖动
import pyautogui# 将鼠标光标从当前位置拖动到屏幕上的坐标 (95, 50) 的位置(默认使用左键进行拖动,可以使用参数 button='*' 进行修改)
pyautogui.dragTo(95, 50, duration=1)# 将鼠标光标相对于当前位置向右拖动 500 像素,向下拖动 300 像素,拖动过程持续 1 秒钟
pyautogui.dragRel(500, 300, duration=1)# 将鼠标光标相对于当前位置向左拖动 500 像素,向上拖动 300 像素,拖动过程持续 1 秒钟
pyautogui.dragRel(-500, -300, duration=1)
  • 鼠标滚动
import pyautogui# 鼠标移动代码...# 向上滚动1000个单位
pyautogui.scroll(1000)# 向下滚动1000个单位
pyautogui.scroll(-1000)

三、键盘操作

键盘输入常用的方法:
在这里插入图片描述

  • 获取键盘按键名称方法
import pyautogui# KEY_NAMES 属性获取了所有键盘按键的名称列表
key_names = pyautogui.KEY_NAMES
print(key_names)
  • keyDown和keyUp方法
# 模拟按下 Windows 键
pyautogui.keyDown('win')# 模拟释放 Windows 键(如果有按下,一定记得写释放,否则手动操作键盘可能会存在问题)
pyautogui.keyUp('win')
  • typewrite方法
# 演示用的浏览器,鼠标移动到浏览器搜索框点击,软件再进行键盘操作
pyautogui.click(145, 60)# 模拟逐个字符地输入字符串,并在每个字符输入之间有 0.1 秒的间隔
pyautogui.typewrite('python', interval=0.1)# 按顺序依次输入列表中的每个元素。'space' 表示空格键
pyautogui.typewrite(['s', 'r', 'f', 'space'], interval=0.2)# 模拟按下回车键
pyautogui.typewrite(['enter'])
  • press方法
# 模拟按下和释放 Enter 键
pyautogui.press('enter')# 模拟按下和释放右键箭头键两次,间隔为0.5秒
pyautogui.press('right', presses=2, interval=0.5)
  • hotkey方法
# 模拟按下和释放 Ctrl+shift+esc 组合键,打开任务管理器
pyautogui.hotkey('ctrl', 'shift', 'esc')
  • 组合示例
import pyautogui
import pyperclip# 演示用的浏览器,鼠标移动到浏览器搜索框点击,软件再进行键盘操作
pyautogui.click(145, 60)"""示例一"""
# 输入 !
pyautogui.keyDown('shift')
pyautogui.press('1')
pyautogui.keyUp('shift')"""示例二"""
# 复制文本到剪贴板中
text_to_copy = "Hello, world!"
pyperclip.copy(text_to_copy)
# 执行粘贴操作
pyautogui.hotkey('ctrl', 'v')

四、屏幕截图

import os
import pyautogui# 定义截图存放路径
folder_path = r'C:\Users\admin\Desktop'
file_path = os.path.join(folder_path, 'screenshot.png')# 对整个屏幕进行截图
screenshot = pyautogui.screenshot()
screenshot.save(file_path)# 对指定区域进行截图
x, y, width, height = 100, 100, 300, 400
region = (x, y, width, height)
screenshot = pyautogui.screenshot(region=region)
screenshot.save(file_path)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通过3D人脸扫描设备制作一个3D超写实虚拟人?

随着虚拟技术的快速发展,现如今的虚拟人逐渐逼真,比二次元虚拟偶像更接近真人形象的3D超写实虚拟人,拥有着更逼真的面部表情,更完美地融入于虚实画面。 随着3D人脸扫描设备不断发展,大大降低了高难度的3D超写实虚拟人…

Django 模型操作(六)

Django通过Model操作数据库, 不管你数据库的类型是MySql或者Sqlite, Django自动帮你生成相应数据库类型的SQL语句,所以不需要关注SQL语句和类型,对数据的操作Django帮我们自动完成。只要会写Model就可以了。 django使用对象关系映射 (Object Relational Mapping, 简称ORM)框…

FPGA UltraScale GTY 全网最细讲解,aurora 8b/10b编解码,HDMI视频传输,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、详细设计方案设计框图视频源选择ADV7611解码芯片配置及采集动态彩条视频数据组包UltraScale GTY 全网最细解读UltraScale GTY 基本结构UltraScale GTY 参考时钟的选择和分配UltraScale GTY 发送和接收处理流程Ultr…

Datawhale聪明办法学Python(task2Getting Started)

一、课程基本结构 课程开源地址:课程简介 - 聪明办法学 Python 第二版 章节结构: Chapter 0 安装 InstallationChapter 1 启航 Getting StartedChapter 2 数据类型和操作 Data Types and OperatorsChapter 3 变量与函数 Variables and FunctionsChapte…

微积分-三角函数

三角函数 在处理微积分问题时,我们不可避免的会遇到三角函数。学会三角函数对于微积分是非常重要的。 基本知识 学习三角函数我们需要先学习一些基本知识。 首先要学习的是弧度的概念。弧度是一种角的度量单位,用于测量角的大小。它是根据角所对的弧长…

羊大师解答,羊奶的中医奇妙之处

羊奶素有“润肺之宝”之称,中医学认为它有着独特的作用和价值。羊奶不仅可以滋润肺部,还能保护肺脏免受外界侵害。在中医理论中,肺为人体之“金”,意味着肺具有极其重要的地位。正常肺气血充足,可以维持人体的正常生理…

Linux --绘制地图投影出现报错:无法成功下载地图背景数据

Linux --绘制地图投影出现报错:无法成功下载地图背景数据 主要原因是由于使用学院集群,该集群无法连接外网,在使用cartopy绘制地图投影时,导致无法成功加载地图背景数据解决方法也很简单,自己手动下载所需要的地形数据…

华清远见嵌入式学习——QT——作业4

作业要求&#xff1a; 代码运行效果图&#xff1a; 代码&#xff1a; 头文件&#xff1a; #ifndef ALARMCLOCK_H #define ALARMCLOCK_H#include <QWidget> #include <QTimerEvent> #include <QTimer> #include <QTime> #include <QTextToSpeech&g…

Github仓库远程操作——简单版

Github远程操作 github仓库简单的远程操作&#xff0c;更多复杂的功能请参考github官方文档 标题 Github远程操作添加公钥到githubGithub仓库远程操作 远程操作之前&#xff0c;先添加本地的公钥到github 添加公钥到github 创建本地ssh公私钥&#xff1a;使用powershell或者gi…

静态HTTP应用的未来趋势与展望

随着互联网的快速发展&#xff0c;静态HTTP应用作为一种简单、快速和安全的Web应用形式&#xff0c;已经得到了广泛的应用。然而&#xff0c;随着技术的不断进步和创新&#xff0c;静态HTTP应用也在不断发展和变化。下面&#xff0c;我们就来谈谈静态HTTP应用的未来趋势和展望。…

PHP+MySQL组合开发众筹系统源码:在线支付+消息通知+完整的代码包 附带完整的搭建教程

互联网的普及和发展&#xff0c;众筹作为一种新型的融资方式&#xff0c;逐渐受到越来越多人的关注和认可。众筹系统作为实现众筹业务的核心工具&#xff0c;其开发和应用对于推动众筹行业的发展具有重要意义。罗峰来给大家分享一款基于PHPMySQL组合开发的众筹系统源码&#xf…

软件测试--selenium安装使用

安装selenium不少人使用pip命令来安装selenium&#xff0c;辛辛苦苦安装完之后&#xff0c;还是不能使用。所以我们可以是直接使用编译器&#xff0c;pycharm直接安装selenium扩展包。 file中点击settings 在Settings中点击Project Interpreter,点击加号就可以安装各种需要的扩…

SD卡无法读取怎么办?详细解决方法分享!

“我的sd卡用了很久&#xff0c;但是不知道为什么无法读取了&#xff0c;尝试了很多种方法我都无法读取到里面的数据。我有很重要的文件保存在里面&#xff0c;想问问有什么方法可以帮助我快速解决这个问题吗&#xff1f;” SD卡是一种非常常用的存储设备&#xff0c;可以用于存…

2023 巅峰之作 | AIGC、AGI、GhatGPT、人工智能大语言模型的崛起与挑战

文章目录 01 《ChatGPT 驱动软件开发》内容简介 02 《ChatGPT原理与实战》内容简介 03 《神经网络与深度学习》04 《AIGC重塑教育》内容简介 05 《通用人工智能》目  录 2023年是人工智能大语言模型大爆发的一年&#xff0c;一些概念和英文缩写也在这一年里集中出现&#xff…

leetcode-24-两两交换链表中的节点(C语言实现)

题目&#xff1a; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&…

详细了解云堡垒机的作用,提高企业数据信息安全

随着上云企业的不断增加&#xff0c;云上数据安全性成为企业面临的重要问题。为了保障企业的核心数据安全&#xff0c;越来越多的企业采购了云堡垒机来提升数据安全性。今天我们就来详细了解一下云堡垒机的作用&#xff0c;以及如何提高企业数据安全。 一、云堡垒机定义 云堡垒…

Python从入门到精通八:Python文件操作

文件的编码 思考&#xff1a;计算机只能识别&#xff1a;0和1&#xff0c;那么我们丰富的文本文件是如何被计算机识别&#xff0c;并存储在硬盘中呢&#xff1f; 答案&#xff1a;使用编码技术&#xff08;密码本&#xff09;将内容翻译成0和1存入。 编码技术即&#xff1a;…

Redux Toolkit(RTK)在React tsx中的使用

一个需求: header组建中有一个搜索框,然后这个搜索框在其他页面路由上都可以使用:例如这两个图共用顶部的搜索框; 我之前的做法就是组建传值, 在他们header 组建和 PageA ,B 的父级组件上定一个值,然后顶部变化传到父级组件,在从父级组件传到page组件,有点繁琐,现在说一下利用…

纯干货,activiti入门看这一篇就够了‼️‼️

纯干货&#xff0c;activiti入门看这一篇就够了‼️‼️ 详细讲解了一个activiti流程的从生到死&#xff0c;及每个节点数据库表的变化 文章目录 &#x1f4d5;一、编写流程文件&#x1f5a5;️二、部署流程&#x1f516; 三、启动刚刚部署的流程生成流程实例&#x1f9e3; 四…

SpringCloud系列(二)| Nacos的安装与配置

Nacos是阿里巴巴提供的一个开源的可作为注册中心和配置中心的SpringCloud组件。 Nacos/nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称;一个更易于构 建云原生应用的动态服务发现、配置管理和服务管理平台。 简单来说Nacos有两个核心功能&#xff0c…