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

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

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

    556 引用 • 674 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    335 引用 • 324 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 737 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖
  • Anytype
    3 引用 • 31 回帖 • 12 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    226 引用 • 476 回帖 • 2 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 702 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 6 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 140 回帖
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • LeetCode

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

    209 引用 • 72 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9409 引用 • 42877 回帖 • 110 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 2 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 1 关注
  • B3log

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

    1063 引用 • 3455 回帖 • 165 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖 • 2 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 431 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 6 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 796 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 567 关注
  • Outlook
    1 引用 • 5 回帖
  • Excel
    31 引用 • 28 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 200 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 637 关注