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

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

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

    554 引用 • 675 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 3 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖 • 2 关注
  • danl
    188 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 4 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 519 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • DNSPod

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

    6 引用 • 26 回帖 • 533 关注
  • OneNote
    1 引用 • 3 回帖 • 3 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    957 引用 • 944 回帖
  • sts
    2 引用 • 2 回帖 • 248 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 44 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖 • 1 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 10 关注
  • C++

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

    108 引用 • 153 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    302 引用 • 772 回帖
  • RemNote
    2 引用 • 16 回帖 • 26 关注
  • Windows

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

    232 引用 • 484 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    120 引用 • 323 回帖
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 726 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 367 回帖
  • 996
    13 引用 • 200 回帖 • 1 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 2 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 414 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 412 关注