了解自动化模块 PyAutoGUI 基本操作

本贴最后更新于 400 天前,其中的信息可能已经时移世改

PyAutoGUI lets your Python scripts control the mouse and keyboard to automate interactions with other applications. The API is designed to be simple. PyAutoGUI works on Windows, macOS, and Linux, and runs on Python 2 and 3.

Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation

1、电脑屏幕的坐标系

引入笛卡尔直角坐标系,以屏幕左上点为原点,X 轴正方形水平向右,Y 轴正方形铅锤向下,此坐标系的单位距离是像素点
左上角的像素位于 (0,0)如果您的屏幕分辨率为 1920*2080,则右下角的坐标为 (1919,2079)
像素图是由许多像素点组成的一个像素点是指具有某个颜色的小正方形。

Snipaste20230201143006.png

2、获取鼠标位置

口 获取屏幕分辨率的大小
pyautogui.size()
口 获取当前鼠标的位置
pyautogui.position( )
口 检查 XY 坐标是否在屏幕上
pyautogui. onScreen(x,y )如果它们位于屏幕的边界内,返回 True;否则,返回 False
传入参数:两个整数参数或带有两个整数的单个元组或列表

>>> import pyautogui
>>> pyautogui.size()
Size(width=2560, height=1600)
>>> pyautogui.position()
Point(x=2066, y=1393)
>>> x,y=pyautogui.position()
>>> print(x,y)
1468 920
>>> pyautogui.onScreen(2000,1300)
True

3、控制鼠标移动

口鼠标运动
pyautogui.moveTo( X,Y) 传递坐标后,鼠标光标移到到该位置 pyautogui.moveTo(100, 200)
pyautogui.moveTo(None, 500)
pyautogui.moveTo(600, None)如果希望鼠标逐渐移动到新位置,需要在函数中传入第三个参数: 移动应采取的持续时间 (秒)。不指定该参数,默认为 0.1s pyautogui.moveTo(100, 200,2)

pyautogui.moveTo(200,300) 绝对移动

pyautogui.move(-200,300) 从当前位置相对移动

>>> import pyautogui
>>> pyautogui.moveTo(1000,1400,duration=2)
>>> pyautogui.move(-200,300,duration=3)

4、按住鼠标拖动

口 鼠标拖动

pyautogui.dragTo( X,Y,button= “left')pyautogui.dragTo( X,Y,button= 'right’)传递坐标后,按住左键/右键将鼠标光标移动到该位置同样可以在函数中传入第三个参数: 移动应采取的持续时间 (秒)pyautogui.dragTo(300, 400, 2, button='left’)>>> pyautogui.dragTo(2000,1300,duration=3,button='left') 绝对拖动
pyautogui.drag(200,130,duration=3,button='left') 相对当前位置拖动

>>> import pyautogui
>>> pyautogui.dragTo(2000,1300,duration=3,button='left')
>>> pyautogui.drag(200,130,duration=3,button='left')

5、模拟鼠标点击

口 鼠标点击

pyautogui.click()
模拟鼠标在当前位置单击左键

pyautogui.click(x=100,y=100)

pyautogui.click(button='right’)

pyautogui.click(clicks=2)
pyautogui.click(clicks=2, interval=0.25)

pyautogui.click(button= 'right”, clicks=3, interval=0.25)
pyautogui.doubleClick( )
pyautogui.tripleClick()

>>> pyautogui.click()
>>> pyautogui.click(button='right')
>>> pyautogui.click(button='right',clicks=3,interval=2)

6、控制鼠标按压和释放

口 mouseDownlmouseUp
由鼠标点击、拖动及按下按钮并释放组成

pyautogui.mouseDown(button='right')

pyautogui.mouseUp(button='right, x=100, y=200)
口 鼠标滚动
pyautogui.scroll(10)pyautogui.scroll(-10)

pyautogui.scroll(10, x=100, y=100)

//画图
>>> pyautogui.click(425,153)
>>> x,y=pyautogui.position()
>>> print(x,y)
433 162
>>> pyautogui.click(433,162,clicks=2)
>>> pyautogui.move(300,200)
>>> pyautogui.mouseDown(button='left')
>>> pyautogui.move(300,200)
>>> pyautogui.mouseUp(button='left')

7、控制键盘自动输入

口 write()函数
pyautogui.write('Hello world!”)

pyautogui.write('Hello world!' interval=0.25)键入字符串的每个字符。输入每个字符之间需要时间间隔,参数 interval
口 按下后释放一个键 press
pyautogui.press('enter') # press the Enter keypyautogui.press('f1)# press the F1 keypyautogui.press(left)# press the left arrow key

口 热键 hotkey
为了方便按热键,按顺序向按下字符串代表的键,然后按反向顺序释放

pyautogui.hotkey('ctrl', 'shift, 'esc')

pyautogui.keyDown('ctrl')

pyautogui.keyDown('shift')

pyautogui.keyDown('esc')

pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')

>>> pyautogui.write('I am lonely without you',interval=0.6)
>>> pyautogui.press('x')

离线安装 pyautogui

#准备安装包
#安装前执行下  
pip freeze >requirements_before.txt
pip install pyautogui
>pip freeze >requirements_after.txt
# 取before和after不同的包,然后保存文件为requirements.txt
>pip download -d packages -r requirements.txt

离线安装
pip install --no-index --find-links=packages -r requirements.txt

Win 定时执行 python 脚本

https://github.com/qiu8310/crontab#windows-版-crontab-java

截图并保存

#/usr/bin/env python3

import os
import pyautogui as pa
import time

def make_dir(dirs):
    if not os.path.exists(dirs):
        os.makedirs(dirs)
  
def get_file_path(dirs):
    time_format = "%Y-%m-%d-%H-%M-%S"
    time_now=time.strftime(time_format,time.localtime())
    file_path=os.path.join(dirs,time_now)
    file_path=file_path+".png"
    return file_path

def screen_shot(file_path):
    im1 = pa.screenshot(file_path)

dirs="D:\yxscan"
make_dir(dirs)
screen_shot(get_file_path(dirs))
  • PyAutoGUI
    2 引用
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 233 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 732 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖 • 4 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 708 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    86 引用 • 896 回帖 • 1 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 618 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 15 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 632 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 405 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    171 引用 • 813 回帖 • 1 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 524 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    484 引用 • 906 回帖 • 1 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    51 引用 • 226 回帖
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 605 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 31 回帖 • 8 关注
  • 996
    13 引用 • 200 回帖 • 2 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    541 引用 • 3529 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 60 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖 • 2 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 262 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    16 引用 • 7 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 11 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 191 关注