安装pyautogui模块

在 Windows 上,不需要安装其他模块。

在 OS X 上,运行 sudo pip3 install pyobjc-framework-Quartz,sudo pip3 install pyobjc-core,然后 sudo pip3 install pyobjc。

在 Linux 上,运行 sudo pip3 install python3-xlib,sudo apt-get install scrot,sudo apt-get install python3-tk,以及 sudo apt-get install python3-dev(Scrot 是PyAutoGUI 使用的屏幕快照程序)。

在这些依赖安装后,运行 pip install pyautogui (或在 OS X 和 Linux 上运行 pip3),安装 pyautogui。

注意事项

有时候自动控制键盘鼠标的测试程序可能会导致人工无法停止的状态

通过注销关闭所有程序

停止失去控制的 GUI 自动化程序,最简单的方法可能是注销,这将关闭所有运行的程序。在 Windows 和 Linux 上,注销的热键是 Ctrl-Alt-Del。在 OS X,热键是 -Shift-Option-Q。通过注销,你会丢失所有未保存的工作,但至少不需要等计算机完全重启。

暂停和自动防故障装置

你可以告诉脚本在每次函数调用后等一会儿,在出问题的时候,让你有很短的时间窗口来控制鼠标和键盘。要做到这一点,将 pyautogui.PAUSE 变量设置为要暂停的秒数。例如,在设置 pyautogui.PAUSE = 1.5 之后,每个 PyAutoGUI 函数调用在执行动作之后,都会等待一秒半。非 PyAutoGUI 指令不会停顿。

pyautogui 也有自动防故障功能。将鼠标移到屏幕的左上角,这将导致 pyautogui产生 pyautogui .FailSafeException 异常。你的程序可以用 try 和 except 语句来处理这个异常,也可以让异常导致程序崩溃。这两种情况下,如果你尽可能快地向左上移动鼠标,自动防故障功能都将停止程序。可以设置 pyautogui. FAILSAFE = False,禁止这项功能。

我们导入 pyautogui,并将 pyautogui.PAUSE 设置为 1,即每次函数调用后暂停一秒。将 pyautogui.FAILSAFE 设置为 True,启动自动防故障功能。

控制鼠标

屏幕的坐标

pyautogui.size() 函数返回两个整数的元组,包含屏幕的宽和高的像素数。

移动鼠标

pyautogui.moveTo(x, y, duration=..)

x,y:移动到的坐标位置

duration:移动所花费的时间;默认值为0,表示立刻到终点;

获取鼠标的位置

pyautogui.position()

这个函数返回鼠标当前位置x,y的元组;

小例子:现在鼠标在哪里?

import pyautogui

try:

print("按Ctrl+C结束:")

while True:

x, y = pyautogui.position()

positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)

print(positionStr, end='')

print('\b' * len(positionStr), end='', flush=True)

except:

pass

点击鼠标

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

x和y为鼠标点击的坐标

button指定是鼠标哪个键点击;默认为鼠标左键;可选(left, right, middle)

pyautogui.doubleClick():鼠标左键双击

pyautogui.rightClick():鼠标右键单击

pyautogui.middleClick():鼠标中键单击

另外还有:pyautogui. mouseDown() 和 pyautogui.mouseUp()类似,分别是鼠标按下和鼠标抬起。

拖动鼠标

pyautogui.dragTo():拖动到指定位置

pyautogui.dragRel():按偏移量进行拖动

一个小例子:

import pyautogui

import time

time.sleep(5)

pyautogui.click() ## click to put drawing program in focus

distance = 200

while distance > 0:

pyautogui.dragRel(distance, 0, duration=0.05) ## move right

distance = distance - 5

pyautogui.dragRel(0, distance, duration=0.05) ## move down

pyautogui.dragRel(-distance, 0, duration=0.05) ## move left

distance = distance - 5

pyautogui.dragRel(0, -distance, duration=0.05) ## move up

打开画图工具,选择画笔,然后运行这个程序,将鼠标放在画板上,5秒后,它就会画出一个图形:

滚动鼠标

pyautogui.scroll():要一个整型参数,说明向上或向下滚动多少单位。单位的意义在每个操作系统和应用上不一样,所以你必须试验,看看在你的情况下滚动多远。滚动发生在鼠标的当前位置。传递正整数表示向上滚动,传递负整数表示向下滚动

处理屏幕

在 Linux 计算机上,需要安装 scrot 程序,才能在 pyautogui 中使用屏幕快照功能。在终端窗口中,执行 sudo apt-get install scrot,安装该程序。如果你使用 Windows或 OS X,就跳过这一步

获取屏幕快照

要在 Python 中获取屏幕快照,就调用 pyautogui.screenshot() 函数:im = pyautogui.screenshot()

im 变量将包含一个屏幕快照的 Image 对象。现在可以调用 im 变量中 Image 对象的方法,就像所有其他 Image 对象一样。

向 getpixel() 函数传入坐标元组,如(0,0)或(50,200),它将告诉你图像中这些坐标处的像素颜色。getpixel() 函数的返回值是一个RGB 元组,包含3 个整数,表示像素的红绿蓝值(没有第四个值表示 alpha,因为屏幕快照是完全不透明的)。这就是你的程序“看到”当前屏幕上内容的方法。

分析屏幕快照

如果屏幕上指定的 x、y 坐标处的像素与指定的颜色匹配,PyAutoGUI 的pixelMatchesColor() 函数将返回 True。第一和第二个参数是整数,对应 x 和 y 坐标。第三个参数是一个元组,包含 3 个整数,是屏幕像素必须匹配的 RGB 颜色。

在获取屏幕快照,并用 getpixel() 函数取得特定坐标处像素颜色的 RGB 元组之后,将同样的坐标和 RGB 元组传递给 pixelMatchesColor(),这应该返回 True。然后改变 RBG 元组中的一个值,用同样的坐标再次调用 pixelMatches Color(),这应该返回 False。你的 GUI 自动化程序要调用 click() 之前,这种方法应该有用。请注意,给定坐标处的颜色应该“完全”匹配。即使只是稍有差异(例如,是(255,255,254)而不是(255,255,255)),那么函数也会返回 False。

图像识别

locateOnScreen('图像') 函数返回4个整数的元组,是屏幕上首次发现该图像时左边的x 坐标、顶边的 y 坐标、宽度以及高度

如果屏幕上找不到该图像,locateOnScreen() 函数将返回 None。请注意要成功识别,屏幕上的图像必须与提供的图像完全匹配。即使只差一个像素,locateOnScreen() 函数也会返回 None。

如果该图像在屏幕上能够找到多处,locateAllOnScreen() 函数将返回一个Generator 对象。可以将它传递给 list() ,返回一个 4 整数元组的列表。每个4整数元组代表了屏幕上的一个区域。如果图像只找到一次,返回的列表就只包含一个元组。

在得到图像所在屏幕区域的 4 整数元组后,就可以点击这个区域的中心。将元组传递给 center() 函数,它将返回该区域中心的 x、y 坐标。

控制键盘

通过键盘发送一个字符串

pyautogui.typewrite() 函数向计算机发送虚拟按键。

pyautogui.typewrite('Hello world!')

默认情况下,typewrite() 函数将立即打印出完整字符串。但是,你可以传入可选的第二参数,在每个字符之间添加短时间暂停。例如,pyautogui.typewrite('Helloworld!',0.25)将在打出H 后等待1/4 秒。打出e 以后再等待1/4 秒,如此等等。这种渐进的打字机效果,对于较慢的应用可能有用,它们处理击键的速度不够快,跟不上pyautogui。对于 A 或!这样的字符,pyautogui 将自动模拟按住 Shift 键。

键名

不是所有的键都很容易用单个文本字符来表示, 在PyAutoGUI 中,这些键表示为短的字符串值:'esc' 表示Esc 键,'enter' 表示 Enter。

除了单个字符串参数,还可以向 typewrite() 函数传递这些键字符串的列表

也可以查看 pyautogui.KEYBOARD_KEYS 列表,看看 pyautogui 接受的所有可能的键字符串

按下和释放键盘

pyautogui.keyDown() 和 pyautogui.keyUp() 将向计算发送虚拟的按键和释放

pyautogui提供了pyautogui.press() 函数,它调用这两个函数,模拟完整的击键。

热键组合

“热键”或“快捷键”是一种按键组合,它调用某种应用功能

可以使用按下抬起的组合,但是相当麻烦

可以使用 pyautogui.hotkey() 函数,它接受多个键字符串参数,按顺序按下,再按相反的顺序释放

常用函数总结

moveTo(x,y)将鼠标移动到指定的 x、y 坐标。

moveRel(xOffset,yOffset)相对于当前位置移动鼠标。

dragTo(x,y)按下左键移动鼠标。

dragRel(xOffset,yOffset)按下左键,相对于当前位置移动鼠标。

click(x,y,button)模拟点击(默认是左键)。

rightClick() 模拟右键点击。

middleClick() 模拟中键点击。

doubleClick()模拟左键双击。

mouseDown(x,y,button)模拟在 x、y 处按下指定鼠标按键。

mouseUp(x,y,button)模拟在 x、y 处释放指定键。

scroll(units)模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。

typewrite(message)键入给定消息字符串中的字符。

typewrite([key1,key2,key3])键入给定键字符串。

press(key)按下并释放给定键。

keyDown(key)模拟按下给定键。

keyUp(key)模拟释放给定键。

hotkey([key1,key2,key3])模拟按顺序按下给定键字符串,然后以相反的顺序释放。

screenshot() 返回屏幕快照的 Image 对象(参见第 17 章关于 Image 对象的信息)。

使用pyperclip模块控制剪切板

1.该模块为第三方模块,需安装后使用pip install pyperclip

2.作用:向剪切板发送文本或读取剪切板文本

3.用法:

pyperclip.copy('dsd')#向剪切板发送文本

pyperclip.paste()读取剪切板文本

标签:pyautogui,鼠标,Python,元组,坐标,屏幕,函数

来源: https://www.cnblogs.com/wbyixx/p/11987317.html

python怎么控制鼠标_Python使用pyautogui控制鼠标键盘相关推荐

  1. python实现自动按键_Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模 ...

  2. python 按键精灵 离线_python,PyAutoGUI,自动操作鼠标键盘,类似按键精灵

    三个文件需在同一个文件夹下面,文件夹的位置无要求. 1.第一个文件,trial.py,python代码调用PyAutoGUI操作鼠标键盘.可以通过修改start_time和end_time来确定程序自 ...

  3. python语音控制手机_python 树莓派语音控制普通台灯教程-Python 实用宝典

    阅读这篇文章前,这两篇文章可能对你会有所帮助: 利用智能音箱语音控制电脑开关机 (必读,否则你可能不知道我在说什么) 先看看效果: 完成这项有趣的实验,你所需要的材料有: 1.电烙铁 2.一个8050 ...

  4. python控制软件点击_Python小程序 控制鼠标循环点击代码实例

    Python小程序 控制鼠标循环点击代码实例 这篇文章主要介绍了Python小程序 控制鼠标循环点击代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...

  5. python如何控制鼠标_python如何直接控制鼠标键盘

    一.简介 我们知道在windows下输入:win + r,会弹出下面的窗口,而在下面的窗口出现后我们接着按下esc键,下面的窗口会消失 现在设想我们想在python代码里控制键盘,想通过运行代码-&g ...

  6. python怎么输出小数部分_python 输出小数控制

    一.要求较小的精度 将精度高的浮点数转换成精度低的浮点数. 1.round()内置方法 round()不是简单的四舍五入的处理方式. >>> round(2.5) 2 >> ...

  7. python控制窗口_Python : Turtle窗口控制

    turtle.bgcolor(* args ) 参数 args - 颜色字符串或0-colormode范围内的三个数字或此类数字的3元组 设置或返回TurtleScreen的背景颜色. screen. ...

  8. python监听键盘输入_Python监听模拟鼠标键盘

    1.监听鼠标和键盘的输入 from pynput import keyboard,mouse def on_press(key): print('alphanumeric key {0} presse ...

  9. python --pyautogui(模拟鼠标键盘操作)

    安装 pip install pyautogui 官网 https://pyautogui.readthedocs.io/en/latest/ 参考文章1 参考文章2 详解 自动防故障 pyautog ...

最新文章

  1. 如何训练2457亿参数量的中文巨量模型“源1.0”
  2. 可恶的MSSQL 内部 SQL Server 错误。(臭BUG)
  3. python3.7 ‘utf-8‘ codec can‘t decode byte 0xbe in position 0: invalid start byte
  4. 2020项目商机_2020未来商机,一万元可以做什么项目
  5. 漫画:什么是冒泡排序
  6. 小学奥数_7655回文数个数 python
  7. 祖龙娱乐2021年亏损3.03亿元 同比收窄60%
  8. nmcli管理网络 RHEL8和CentOS8怎么重启网络
  9. SPSS 相关与回归小结(图文+数据集)【SPSS 026期】
  10. readelf 和 objdump 例子详解及区别 (ELF文件说明)
  11. XL4001 典型应用电路
  12. [Windows系统]visio安装时提示和即点即用版本不能并行怎么办
  13. python 制作 多种 词云
  14. 谈马云创业人生中的十大苦难
  15. 用标号法求最短路径matlab,标号法求最短路径问题
  16. java与es8实战之五:SpringBoot应用中操作es8(带安全检查:https、账号密码、API Key)
  17. 数据挖掘需要什么数学基础(一)
  18. win10退出当前guest用户
  19. 012:vue+openlayers加载引用3种 Stamen地图(示例代码)
  20. Git和GitHub学习笔记 V2.0(更新中...)

热门文章

  1. Matlab MFCC音乐特征匹配与DTW算法识别(含GUI设计)
  2. Field dataSource in com.security1.config.SecurityConfig required a bean of type ‘javax.sql.DataSourc
  3. PDF怎么在线编辑?不妨试试这个办法
  4. linux mint 18虚拟机下设置1080P分辨率的方法
  5. 黑牛外汇交易系统1.97版说明书-高稳定盈利的外汇交易系统
  6. 备案接口 php,PHP网站备案查询API接口代码
  7. android检测sim卡状态,android 判断网络连接、sim卡信息以及ping操作是否网络连接正常...
  8. UART,RS232,RS485
  9. Jmeter win10设置字体大小
  10. C#实现生成(条码/二维码)