以下翻译来自官司网说明网站 pyautogui.readthedocs.io

pyautogui模块的目的是提供跨平台的自动化键盘鼠标操作。这个模块我们尽可能设计得容易使用。例如,下面的代码都会把鼠标指针移到计算机屏幕中央。

>>> import pyautogui

>>> screenWidth, screenHeight = pyautogui.size()

>>> pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

pyautogui模块能让你模拟鼠标指针的移动、单击鼠标、拖曳鼠标指针,按住或松开某键,或者组合键也是没问题的。下面是一个例子:

>>> import pyautogui

>>> screenWidth, screenHeight = pyautogui.size() # 获取屏幕尺寸

>>> currentMouseX, currentMouseY = pyautogui.position() # 当前鼠标指针坐标

>>> pyautogui.moveTo(100, 150) # 移动鼠标到(100,150)坐标

>>> pyautogui.click() # 单击

>>> pyautogui.moveRel(None, 10) # move mouse 10 pixels down 向下移动鼠标指针10个像素

>>> pyautogui.doubleClick() # 双击

>>> pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # 2秒内移动鼠标指针到某坐标

# 下面是模拟输入英文字符

>>> pyautogui.typewrite('Hello world!', interval=0.25) # 1/4秒的间隔时间输入一个字符

>>> pyautogui.press('esc') # 按esc键

>>> pyautogui.keyDown('shift') # 按住上档键

>>> pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left']) # 按左左左左左左

>>> pyautogui.keyUp('shift') # 松开上档键

>>> pyautogui.hotkey('ctrl', 'c') # 按Ctrl + C键

下面的例子是拖动鼠标指针画一个方形螺旋图,请先打开mspaint,方法是按Win+r键,然后在运行对话框中输入 mspaint。

>>> distance = 200

>>> while distance > 0:

pyautogui.dragRel(distance, 0, duration=0.5) # 向右移动

distance -= 5

pyautogui.dragRel(0, distance, duration=0.5) # 向下移动

pyautogui.dragRel(-distance, 0, duration=0.5) # 向左移动

distance -= 5

pyautogui.dragRel(0, -distance, duration=0.5) # 向上移动

在Windows操作系统中,pyautogui不需要依赖其它模块。如,它不需要有pywin32模块支持,这是由于它使用ctypes模块。安装pyautogui的方法很简单,用 pip install pyautogui命令即可,它会安装pillow,以实现截屏功能。通过命令pyautogui.PAUSE = 2.5,可以让每次动作后暂停2.5秒。以下是右击,中击,双击,三击模拟代码:

>>> pyautogui.rightClick(x=moveToX, y=moveToY) # 右击

>>> pyautogui.middleClick(x=moveToX, y=moveToY) # 中击

>>> pyautogui.doubleClick(x=moveToX, y=moveToY) # 双击

>>> pyautogui.tripleClick(x=moveToX, y=moveToY) # 三击

以下是信息提示框功能:

>>> pyautogui.alert('显示一个有OK的提示对话框')

>>> pyautogui.confirm('显示一个有OK和Cancle的对话框')

'OK'

>>> pyautogui.prompt('输入对话框')

'This is what I typed in.'

下面是截屏功能:

>>> pyautogui.screenshot() # 返回pilllow图像模式

>>> pyautogui.screenshot('风火轮编程.png') #返回图像并保存到文件中

如果你想查找计算机屏上的某个图片,用locateOnScreen命令。以下是代码:

>>> pyautogui.locateOnScreen('风火轮编程_李兴球原创Python创意程序.png') # 返回找到的第一个矩形 (left, top, width, height)

(863, 417, 70, 13)

locateAllOnScreen命令能返回所有找到的图形,返回它们的矩形,以下是代码:

>>> for i in pyautogui.locateAllOnScreen('风火轮编程_李兴球_www.lixingqiu.com.png')

...

...

(863, 117, 70, 13)

(623, 137, 70, 13)

(853, 577, 70, 13)

(883, 617, 70, 13)

(973, 657, 70, 13)

(933, 877, 70, 13)

或像下面这样的代码也可以呀:

>>> list(pyautogui.locateAllOnScreen('www.scratch8.net.png'))

[(863, 117, 70, 13), (623, 137, 70, 13), (853, 577, 70, 13), (883, 617, 70, 13), (973, 657, 70, 13), (933, 877, 70, 13)]

下面的代码可以不断地获取鼠标指针坐标:

import pyautogui, sys

print('Press Ctrl-C to quit.') # 按Ctrl+C 中断

try:

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 KeyboardInterrupt:

print('\n')

onScreen命令检测坐标是否在计算机屏幕范围内:

>>> pyautogui.onScreen(0, 0)

True

>>> pyautogui.onScreen(0, -1)

False

>>> pyautogui.onScreen(0, 99999999)

False

>>> pyautogui.size() # 屏幕尺寸

(1920, 1080)

>>> pyautogui.onScreen(1920, 1080)

False

>>> pyautogui.onScreen(1919, 1079)

True

拖动鼠标指针示例代码:

>>> pyautogui.dragTo(100, 200, button='left') # 按住左键,拖动鼠标指针到100,200坐标

>>> pyautogui.dragTo(300, 400, 2, button='left') # 按住左键,在2秒内拖动鼠标指针到100,200坐标

>>> pyautogui.drag(30, 0, 2, button='right') # 按住右键,在2秒内拖动鼠标指针到30,0坐标

下面的命令滚动鼠标,就是按滚轮模拟:

>>> pyautogui.scroll(10) # 向上滚动10次

>>> pyautogui.scroll(-10) # 向下滚动10次

>>> pyautogui.scroll(10, x=100, y=100) # 移动鼠标指针到100, 200, 然后滚动10次

以下是模拟键盘按键代码:

>>> pyautogui.keyDown('shift') # 按住shift键

>>> pyautogui.press('left') # 按左方向箭头

>>> pyautogui.press('left') # 按左方向箭头

>>> pyautogui.press('left') # 按左方向箭头

>>> pyautogui.keyUp('shift') # 松开shift键

下面是按键表:

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',

')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',

'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',

'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',

'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',

'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',

'browserback', 'browserfavorites', 'browserforward', 'browserhome',

'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',

'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',

'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',

'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',

'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',

'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',

'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',

'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',

'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',

'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',

'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',

'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',

'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',

'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',

'command', 'option', 'optionleft', 'optionright']

查找屏幕上的像素:

>>> import pyautogui

>>> im = pyautogui.screenshot() # 获取快照,截屏

>>> im.getpixel((100, 200)) # 得到坐标点像素值

(130, 135, 144)

检测屏幕上某坐标点是否匹配像素值:

>>> import pyautogui

>>> pyautogui.pixelMatchesColor(100, 200, (130, 135, 144))

True

>>> pyautogui.pixelMatchesColor(100, 200, (0, 0, 0))

False

python实现按键精灵的功能_pyautogui简介_python中的按键精灵_键盘鼠标模拟相关推荐

  1. 鼠标光标一直在闪烁_便携有个性,功能强大,可配戴在手指上的键盘鼠标

    中车永济电机有限公司.河南大学物理与电子学院的研究人员陶崇勃.侯卫周,在2019年<电气技术>增刊1中撰文(论文标题为"一款指尖压敏可配戴式键盘鼠标")指出,在信息科技 ...

  2. python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化

    使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...

  3. python 自动化办公 uibot_使用 Python 扩展丰富 UiBot 的功能及在 UiBot 中引用 Python 模块...

    前言 UiBot除了自带的强大功能外,还允许有编程经验的RPA开发人员对功能进行自由扩展,目前UiBot支持以下四种扩展方式: Python插件.Lua插件.Lua Mod插件.COM插件(.Net也 ...

  4. python数据格式简介_Python中数据类型时间的介绍(附代码)

    本篇文章给大家带来的内容是关于Python中数据类型时间的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.什么是时间数据类型 Python中表示时间类型的数据结构为 ...

  5. python django下载 功能如何实现_Python中django文件传输下载功能的实现

    Python中django文件传输下载功能的实现,基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django ...

  6. python watchdog 同时检测到多个事件_python中watchdog文件监控与检测上传功能

    引言 上一篇介绍完了观察者模式的原理,本篇想就此再介绍一个小应用,虽然我也就玩了一下午,是当时看observer正好找到的,以及还有Django-observer,但Django很久没用了,所以提下这 ...

  7. python中input的功能是什么_python中的input的功能是什么

    Python3.x中input()函数接受一个标准输入数据,返回为string类型. Python2.x中input() 相等于eval(raw_input(prompt)),用来获取控制台的输入. ...

  8. python程序的name的作用是什么_python 中__name__ = '__main__' 的作用,到底干嘛的?

    python 中__name__ = 'main' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: "Make a script both importable and execu ...

  9. python声明一个长度为n的列表_python中长度为n的列表的置换

    所以我开始学习python,想做一个练习,写一个小脚本,看看能不能写.结果我不能把它放在右边,我会离开它,但是我有点下定决心,现在对这个特殊的功能产生了仇恨.在 我想让代码接受一个给定数字的原始输入, ...

最新文章

  1. .net 返回datatable显示sql列名_3汇总分析-SQL
  2. 【Red Hat 】vim编辑器的常用命令以及使用技巧
  3. 函数09 - 零基础入门学习C语言40
  4. Android点击Button实现功能的几种方法总结
  5. Python A+B问题
  6. leetcode(3)---寻找最大字符串
  7. 【链接】Linux C/C++ 学习路线-已拿腾讯、百度 offer
  8. Educational Codeforces Round 15 套题
  9. threallocal详解
  10. 邪恶改装:TPYBoard制作廉价WIFI干扰器
  11. 算法编程-不定时更新
  12. 【压缩感知OMP算法】OMP算法的Matlab版本
  13. linux终端清除命令,如何清除 Linux 中的终端?使用 clear 命令清除 Linux 终端
  14. php imagick 取得psd缩略图,php实现在新浪云中使用imagick生成缩略图并上传的方法...
  15. Linux下pgadmin4启动报错,在CentOS 7/Fedora 29系统上安装配置pgAdmin 4的方法
  16. 济安横断面怎么去水印_济安横断面设计软件
  17. 有关串口、USB接口串联小电阻的对话
  18. idea插件开发--组件--编程久坐提醒
  19. 【算法导论-34】红黑树、顺序统计树的Java实现
  20. 实时视频传输协议RTP

热门文章

  1. QQ宣布即将关停这功能,网友炸锅了 !
  2. VBA Excel实践如何系列(三)vba如何设置单元格边框、字体
  3. 高空布控系统_在消防实战中的应用
  4. 【Python爬虫】最近想买电脑,用Python爬取京东评论做个参考
  5. 浅谈面向对象程序设计方法
  6. Go+ 1.0即将正式发布!相关特性和发展路线图介绍
  7. Java实现简单井字棋小游戏代码实例
  8. String类的常用方法大全!
  9. MHD-HD61I 大广角72.5度 12倍光学变焦摄像头
  10. 面试官会提问的面试题目汇总