PyAutoGUI

article/2025/8/25 7:32:19

PyAutoGUI

  • 安装
    • cmd Windows安装
    • pycharm安装
  • 备忘录
    • 通用功能
    • 故障安全
    • 鼠标功能
    • 键盘功能
    • 消息框功能
    • 截图函数
  • 鼠标控制功能
    • 屏幕和鼠标位置
    • 鼠标移动
    • 鼠标拖动
    • 补间/缓动功能
    • 鼠标点击
    • 鼠标按下和鼠标悬停函数
    • 鼠标滚动
  • 键盘控制功能
    • write()函数
    • press(), keyDown(), keyUp()函数
    • hold()上下文管理器
    • hotkey()函数
    • KEYBOARD_KEYS
  • 消息框功能
    • alert()函数
    • confirm()函数
    • prompt() 函数
    • password() 函数
  • 截图函数
    • screenshot() 函数
    • 定位功能
    • 灰度匹配
    • 像素匹配

安装

cmd Windows安装

pip install pyautogui

pycharm安装

![在这里插入图片描述](https://img-blog.csdnimg.cn/3072aad07a37471a9719b069253166b5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YyX5rO9b2w=,size_20,color_FFFFFF,t_

备忘录

导入 pyautogui

import pyautogui

通用功能

mouse = pyautogui.position()  # 返回当前鼠标 x 和 y 
screen = pyautogui.size()  # 当前屏幕分辨率宽高
flag = pyautogui.onScreen(100, 200)  # 如果 x & y 在屏幕内,则为真。

故障安全

pyautogui.PAUSE = 2.5 # 设置每次 PyAutoGUI 调用后 2.5 秒的暂停
pyautogui.FAILSAFE = True # 当故障安全模式是时,将鼠标移动到左上角将提高一个可以中止您的程序

鼠标功能

pyautogui.moveTo(0, 0, duration=0.2)  # 在0.2秒内移动鼠标到XY坐标
pyautogui.moveRel(200, 200, duration=1)  # 相对于当前位置移动鼠标 duration移动秒数
pyautogui.FAILSAFE = False
pyautogui.dragTo(0, 0, duration=1)  # 将鼠标拖动到 XY
pyautogui.dragRel(100, 100, duration=1)  # 相对于当前位置拖动鼠标
"""
鼠标拖动到 x & y 并点击
x : x坐标
y : y坐标
clicks : 点击次数
interval : 点击之间的秒数
button : 按键 参数 : LEFT、MIDDLE、RIGHT、PRIMARY、SECONDARY
"""
pyautogui.click(x=10, y=10, clicks=1, interval=1, button='left')
pyautogui.rightClick(x=moveToX, y=moveToY) # 鼠标移动到 x & y 并右键单击
pyautogui.middleClick(x=moveToX, y=moveToY) # 鼠标移动到 x & y 并中键单击
pyautogui.doubleClick(x=moveToX, y=moveToY) # 鼠标移动到 x & y 并左键双击
pyautogui.tripleClick(x=moveToX, y=moveToY) # 鼠标移动到 x & y 并执行三次单击
pyautogui.scroll(1000, x=1075, y=641)  # 执行鼠标滚轮的滚动
pyautogui.mouseDown(x=moveToX, y=moveToY, button='left') # 单个按钮向下和向上事件可以单独调用
pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

键盘功能

pyautogui.typewrite('Hello World!\n', interval=0.1)  # 用于输入文本,换行符是 Enter , interval = 每个字符间隔的秒数
"""
也可以传递键名列表
键名称的完整列表位于 pyautogui.KEYBOARD_KEYS 中。
"""
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter'], interval=0.5)
# 单个按钮向下和向上事件可以单独调用
pyautogui.keyDown(key_name)
pyautogui.keyUp(key_name)

消息框功能

pyautogui.alert('这将显示一些带有 OK 按钮的文本。')
pyautogui.confirm('这将显示文本并有一个确定和取消按钮。')
pyautogui.prompt('这允许用户输入一个字符串并按 OK。')

截图函数

screen = pyautogui.screenshot()  # 返回一个 Pillow/PIL 图片对象
foo = pyautogui.screenshot('foo.png')  # 返回 Pillow/PIL 图片对象,并将其保存到文件中
test = pyautogui.locateOnScreen('test.png')  # 返回找到的第一个位置(左、上、宽、高)

鼠标控制功能

屏幕和鼠标位置

屏幕上的位置由 X 和 Y 笛卡尔坐标表示。X 坐标从左侧的 0 开始,向右增加。与数学不同,Y 坐标从顶部的 0 开始,向下增加。

0,0       X increases -->
+---------------------------+
|                           | Y increases
|                           |     |
|   1920 x 1080 screen      |     |
|                           |     V
|                           |
|                           |
+---------------------------+ 1919, 1079

左上角的像素位于坐标 0, 0 处。如果屏幕的分辨率为 1920 x 1080,则右下角的像素将为 1919, 1079(因为坐标从 0 开始,而不是 1)。
屏幕分辨率大小由函数作为两个整数的元组返回。鼠标光标的当前 X 和 Y 坐标由函数返回。
例如:

>>> pyautogui.size()
(1920, 1080)
>>> pyautogui.position()
(187, 567)

这是一个简短的Python 3程序,它将不断打印出鼠标光标的位置:

#! python3
import pyautogui, sys
print('Press Ctrl-C to quit.')
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')

这是 Python 2 版本:

#! python
import pyautogui, sys
print('Press Ctrl-C to quit.')
try:while True:x, y = pyautogui.position()positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)print positionStr,print '\b' * (len(positionStr) + 2),sys.stdout.flush()
except KeyboardInterrupt:print '\n'

要检查屏幕上是否有 XY 坐标,请将它们(作为两个整数参数或具有两个整数的单个元组/列表参数)传递给函数,如果它们在屏幕边界内,则返回。

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

鼠标移动

该函数会将鼠标光标移动到您传递它的 X 和 Y 整数坐标。可以将坐标的值传递给表示"当前鼠标光标位置"的值。

>>> pyautogui.moveTo(100, 200)   # 将鼠标移动到X (100) Y(200)处。
>>> pyautogui.moveTo(None, 500)  # 将鼠标移动到X (100) Y(500)处。
>>> pyautogui.moveTo(600, None)  # 将鼠标移动到X (600) Y(500)处。

通常,鼠标光标将立即移动到新坐标。如果希望鼠标逐渐移动到新位置,请传递第三个参数来表示移动应采用的持续时间(以秒为单位)。

>>> pyautogui.moveTo(100, 200, 2)   # 将鼠标移动到X的100,Y的200在2秒内

如果要将鼠标光标相对于其当前位置移动几个像素,请使用该函数。此函数具有与 类似的参数。

>>> pyautogui.moveTo(100, 200)  # 将鼠标移动到X (100) Y(200)处。
>>> pyautogui.move(0, 50)       # 将鼠标向下移动50像素。
>>> pyautogui.move(-30, 0)      # 将鼠标向左移动30像素。
>>> pyautogui.move(-30, None)   # 移动鼠标向左30像素。

鼠标拖动

PyAutoGUI 和函数具有与 和 函数相似的参数。此外,它们还有一个关键字,可以设置为 ,以及拖动时要按住的鼠标按钮。

>>> pyautogui.dragTo(100, 200, button='left')     # 按住鼠标左键拖动鼠标到X值为100,Y值为200  
>>> pyautogui.dragTo(300, 400, 2, button='left')  # 按住鼠标左键拖动鼠标到X为300,Y为400,超过2秒  
>>> pyautogui.drag(30, 0, 2, button='right')   # 按住鼠标右键拖动鼠标向左拖动30像素超过2秒

补间/缓动功能

补间是使鼠标移动花哨的额外功能。如果您不关心这一点,则可以跳过此部分。
例如:

>>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)     # 开始慢,结束快
>>> pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad)    # 开始快,结束慢
>>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad)  # 开始和结束要快,中间要慢
>>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce)   # 最后反弹
>>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)  # 最后是橡皮筋

这些补间函数是从Al Sweigart的PyTweening模块复制的:https://pypi.python.org/pypi/PyTweening https://github.com/asweigart/pytweening 该模块不必安装即可使用补间函数。
如果要创建自己的补间函数,请定义一个函数,该函数在(表示鼠标移动的开始)和(表示鼠标移动的结束)之间采用单个 float 参数,并在 和 之间返回浮点值。

鼠标点击

该函数模拟鼠标在鼠标当前位置单击一个左键。"咔哒"被定义为按下按钮,然后向上释放。

>>> pyautogui.click()

要在单击之前合并调用,请为 and 关键字参数传递整数:moveTo()

>>> pyautogui.click(x=100, y=200)  # 移动到100,200,然后点击鼠标左键。  

要指定其他鼠标按钮来单击、传递 、或为关键字参数指定,请执行以下操作:‘left’‘middle’'right’button

>>> pyautogui.click(button='right')  # 右击鼠标

若要执行多次单击,请将整数传递给关键字参数。(可选)您可以将浮点数或整数传递给关键字参数,以指定两次点击之间的暂停量(以秒为单位)。例如:clicks

>>> pyautogui.click(clicks=2)  # 双击鼠标左键
>>> pyautogui.click(clicks=2, interval=0.25)  # 双击鼠标左键,但每次单击之间有四分之一秒的停顿
>>> pyautogui.click(button='right', clicks=3, interval=0.25)  # 三次点击鼠标右键,在两次点击之间暂停四分之一秒

作为一个方便的快捷方式,该功能将执行双击鼠标左键。它还具有可选的和关键字参数。例如:doubleClick()

>>> pyautogui.doubleClick()  # 双击左键

还有一个函数具有类似的可选关键字参数。tripleClick()
该函数具有可选参数和关键字参数。rightClick()

鼠标按下和鼠标悬停函数

鼠标单击和拖动由按下鼠标按钮和将其释放回来组成。如果要单独执行这些操作,请调用 and 函数。它们具有相同的 、 和

>>> pyautogui.mouseDown(); pyautogui.mouseUp()  # 这和点击鼠标左键是一样的
>>> pyautogui.mouseDown(button='right')  # 按下正确的按钮
>>> pyautogui.mouseUp(button='right', x=100, y=200)  # 将鼠标移动到100,200,然后松开右键向上。  

鼠标滚动

可以通过调用该函数并传递整数次的"单击"来模拟鼠标滚轮滚动。"点击"中的滚动量因平台而异。(可选)可以为 and 关键字参数传递整数,以便在执行滚动之前移动鼠标光标。例如:scroll()xy

>>> pyautogui.scroll(10)   # 向上滚动10“单击”
>>> pyautogui.scroll(-10)  # 向下滚动10“单击”
>>> pyautogui.scroll(10, x=100, y=100)  # 将鼠标光标移动到100,200,然后向上滚动10“单击”

在OS X和Linux平台上,PyAutoGUI还可以通过调用hscroll()函数来执行水平滚动。例如:

>>> pyautogui.hscroll(10)   # 向右滚动10“点击”
>>> pyautogui.hscroll(-10)   # 滚动左10“点击”

该函数是 执行垂直滚动的 包装器。

键盘控制功能

write()函数

主要键盘功能是 。此函数将键入传递的字符串中的字符。若要在按每个字符键之间添加延迟间隔,请为关键字参数传递 int 或 float。
例如:

>>> pyautogui.write('Hello world!')                 # 打印出“你好世界!”即刻
>>> pyautogui.write('Hello world!', interval=0.25)  # 输出“Hello world!”,每个字符后面有四分之一秒的延迟 

例如,您只能使用 的单字符键与 按 键,因此无法按 Shift 或 F1 键。write()

press(), keyDown(), keyUp()函数

若要按这些键,请调用该函数,并将其传递给来自 、 、 的字符串。
例如:

>>> pyautogui.press('enter')  # 按ENTER键
>>> pyautogui.press('f1')     # 按f1键
>>> pyautogui.press('left')   # 按左箭头键

该函数实际上只是 and 函数的包装器,它模拟按下一个键,然后将其释放起来。这些函数可以自己调用。例如,若要在按住 Shift 键的同时按三次向左箭头键,请调用以下命令:press(),keyDown(),keyUp()

>>> pyautogui.keyDown('shift')  # 按住Shift键
>>> pyautogui.press('left')     # 按左箭头键
>>> pyautogui.press('left')     # 按左箭头键
>>> pyautogui.press('left')     # 按左箭头键
>>> pyautogui.keyUp('shift')    # 释放Shift键

要按与按下多个键类似的键,请将字符串列表传递给 。例如:write()press()

>>> pyautogui.press(['left', 'left', 'left'])

或者您可以设置按压次数:left

>>> pyautogui.press('left', presses=3)

若要在每次按下之间添加延迟间隔,请为关键字参数传递 int 或 float。interval

hold()上下文管理器

为了方便持有密钥,该函数可以用作上下文管理器,并从 , , 等传递字符串,并且此密钥将在上下文块的持续时间内保留。

>>> with pyautogui.hold('shift'):pyautogui.press(['left', 'left', 'left'])

…等效于以下代码:

>>> pyautogui.keyDown('shift')  # 按住Shift键
>>> pyautogui.press('left')     # 按左箭头键
>>> pyautogui.press('left')     # 按左箭头键
>>> pyautogui.press('left')     # 按左箭头键
>>> pyautogui.keyUp('shift')    # 释放Shift键

hotkey()函数

为了方便按热键或键盘快捷键,可以传递几个键串,这些键串将按顺序按下,然后以相反的顺序释放。

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

…等效于以下代码:

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

若要在每次按下之间添加延迟间隔,请为关键字参数传递 int 或 float。

KEYBOARD_KEYS

['\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']

消息框功能

alert()函数

>>> alert(text='', title='', button='OK')

显示一个简单的消息框,其中包含文本和单个"确定"按钮。返回单击的按钮的文本。

confirm()函数

>>> confirm(text='', title='', buttons=['OK', 'Cancel'])

显示一个带有"确定"和"取消"按钮的消息框。可以自定义按钮的数量和文本。返回单击的按钮的文本。

prompt() 函数

>>> prompt(text='', title='' , default='')

显示一个带有文本输入以及"确定"和"取消"按钮的消息框。返回输入的文本,如果单击了"取消",则返回"无"。

password() 函数

>>> password(text='', title='', default='', mask='*')

显示一个带有文本输入以及"确定"和"取消"按钮的消息框。键入的字符显示为 。返回输入的文本,如果单击了"取消",则返回"无"。

截图函数

PyAutoGUI 可以截取屏幕截图,将其保存到文件中,并在屏幕中找到图像。如果您有一个小图像,例如,需要单击的按钮并希望在屏幕上找到它,这将非常有用。这些功能由 PyScreeze 模块提供,该模块随 PyAutoGUI 一起安装。

屏幕截图功能需要枕头模块。OS X 使用该命令,该命令随操作系统一起提供。Linux 使用该命令,该命令可以通过运行 来安装。

screenshot() 函数

调用将返回一个 Image 对象(有关详细信息,请参阅枕头或 PIL 模块文档)。传递文件名字符串会将屏幕截图保存到文件中,并将其作为 Image 对象返回。

>>> import pyautogui
>>> im1 = pyautogui.screenshot()
>>> im2 = pyautogui.screenshot('my_screenshot.png')

在1920 x 1080屏幕上,该功能大约需要100毫秒 - 它不快,但并不慢。screenshot()

如果您不想查看整个屏幕的屏幕截图,还有一个可选的关键字参数。您可以传递要捕获的区域的左侧、顶部、宽度和高度的四个整数元组:region

>>> import pyautogui
>>> im = pyautogui.screenshot(region=(0,0, 300, 400))

定位功能

注意:从版本 0.9.41 开始,如果 locate 函数找不到提供的图像,它们将引发而不是返回 。
如果您有图像文件,则可以在屏幕上直观地找到它。例如,假设计算器应用正在您的计算机上运行,如下所示:
在这里插入图片描述
如果您不知道计算器按钮所在位置的确切屏幕坐标,则无法调用 and 函数。计算器每次启动时都可能出现在稍微不同的位置,导致您每次都重新找到坐标。但是,如果您有按钮的图像,例如 7 按钮的图像:moveTo(),click()
…您可以调用该函数来获取屏幕坐标。返回值是一个 4 整数元组:(左、上、宽、高)。可以传递此元组以获取该区域中心的 X 和 Y 坐标。如果在屏幕上找不到该图像,则 引发 。

>>> import pyautogui
>>> button7location = pyautogui.locateOnScreen('calc7key.png')
>>> button7location
Box(left=1416, top=562, width=50, height=41)
>>> button7location[0]
1416
>>> button7location.left
1416
>>> button7point = pyautogui.center(button7location)
>>> button7point
Point(x=1441, y=582)
>>> button7point[0]
1441
>>> button7point.x
1441
>>> button7x, button7y = button7point
>>> pyautogui.click(button7x, button7y)  # 点击找到7按钮的中心
>>> pyautogui.click('calc7key.png') # 要点击找到7按钮的中心的快捷方式版本

可选的关键字参数指定函数在屏幕上定位图像的准确性。如果函数由于像素差异可以忽略不计而无法定位图像,这将很有帮助:confidence

>>> import pyautogui
>>> button7location = pyautogui.locateOnScreen('calc7key.png', confidence=0.9)
>>> button7location
Box(left=1416, top=562, width=50, height=41)

注意:您需要安装 OpenCV 才能使用该关键字
该函数结合了和:locateCenterOnScreen(),locateOnScreen(),center()

>>> import pyautogui
>>> x, y = pyautogui.locateCenterOnScreen('calc7key.png')
>>> pyautogui.click(x, y)

在 1920 x 1080 屏幕上,定位函数调用大约需要 1 或 2 秒。这对于动作视频游戏来说可能太慢了,但适用于大多数目的和应用程序。

有几个"定位"功能。他们都开始看屏幕(或图像)的左上角,然后向右看,然后向下看。参数可以是

locateOnScreen(image, grayscale=False)- 返回(左,上,宽,高)在屏幕上首次找到的实例的坐标。如果在屏幕上找不到,则引发。imageImageNotFoundException
locateCenterOnScreen(image, grayscale=False)- 返回 (x, y) 坐标,该坐标是屏幕上第一个找到的 实例的中心。如果在屏幕上找不到,则引发。imageImageNotFoundException
locateAllOnScreen(image, grayscale=False)- 返回一个生成器,该生成器为图像在屏幕上的位置生成(左、上、宽、高)元组。
locate(needleImage, haystackImage, grayscale=False)- 返回 (左、 顶部、 宽度、 高度) 第一个找到的实例的坐标。如果在屏幕上找不到,则引发。needleImagehaystackImageImageNotFoundException
locateAll(needleImage, haystackImage, grayscale=False)- 返回一个生成器,该生成器(左、上、宽、高)元组,用于在 中找到的位置。needleImagehaystackImage
"查找全部"函数可以在 for 循环中使用,也可以传递给:list()

>>> import pyautogui
>>> for pos in pyautogui.locateAllOnScreen('someButton.png')
...   print(pos)
...
(1101, 252, 50, 50)
(59, 481, 50, 50)
(1395, 640, 50, 50)
(1838, 676, 50, 50)
>>> list(pyautogui.locateAllOnScreen('someButton.png'))
[(1101, 252, 50, 50), (59, 481, 50, 50), (1395, 640, 50, 50), (1838, 676, 50, 50)]

这些"定位"功能相当昂贵;他们可能需要整整一秒钟才能运行。加快速度的最佳方法是传递一个参数(一个 4 整数元组(左、上、宽、高))以仅搜索屏幕的较小区域,而不是全屏:region

>>> import pyautogui
>>> pyautogui.locateOnScreen('someButton.png', region=(0,0, 300, 400))

灰度匹配

(可选)您可以传递到定位函数以提供轻微的加速(约 30%左右)。这会降低图像和屏幕截图中的颜色饱和度,从而加快定位速度,但可能导致误报匹配。grayscale=True

>>> import pyautogui
>>> button7location = pyautogui.locateOnScreen('calc7key.png', grayscale=True)
>>> button7location
(1416, 562, 50, 41)

像素匹配

若要获取屏幕截图中像素的 RGB 颜色,请使用 Image 对象的方法:getpixel()

>>> import pyautogui
>>> im = pyautogui.screenshot()
>>> im.getpixel((100, 200))
(130, 135, 144)

或者作为单个函数,调用 PyAutoGUI 函数,它是以前调用的包装器:pixel()

>>> import pyautogui
>>> pix = pyautogui.pixel(100, 200)
>>> pix
RGB(red=130, green=135, blue=144)
>>> pix[0]
130
>>> pix.red
130

如果只需要验证单个像素是否与给定像素匹配,请调用该函数,向其传递它所表示颜色的 X 坐标、Y 坐标和 RGB 元组:pixelMatchesColor()

>>> import pyautogui
>>> pyautogui.pixelMatchesColor(100, 200, (130, 135, 144))
True
>>> pyautogui.pixelMatchesColor(100, 200, (0, 0, 0))
False

可选的关键字参数指定每个红色、绿色和蓝色值在仍然匹配时可以变化的程度:tolerance

>>> import pyautogui
>>> pyautogui.pixelMatchesColor(100, 200, (130, 135, 144))
True
>>> pyautogui.pixelMatchesColor(100, 200, (140, 125, 134))
False
>>> pyautogui.pixelMatchesColor(100, 200, (140, 125, 134), tolerance=10)
True

http://chatgpt.dhexx.cn/article/MChftg1a.shtml

相关文章

pyautogui库的使用教程(超详细)

一、前言 PyAutoGUI 让您的 Python 脚本控制鼠标和键盘以自动与其他应用程序交互。 官方文档&#xff1a;PyAutoGUI documentation 常用函数列表 函数名功能基本pyautogui.size()返回包含分辨率的元组pyautogui.PAUSE每个函数的停顿时间&#xff0c;默认0.1spyautogui.FAILSAF…

python自动化神器:pyautogui

详情可访问&#xff1a;pyautogui官网地址&#xff0c;关注本专栏&#xff0c;学习自动发消息给对象 文章目录 一、pyautogui是什么&#xff1f;二、使用步骤1.安装和引入库2.基本操作&#xff08;1)鼠标控制&#xff08;2)键盘控制&#xff08;3)屏幕截图&#xff08;4)图片位…

Python基础之pyautogui模块(详细总结鼠标键盘操作)

Python基础之鼠标操作 文章目录 Python基础之鼠标操作1. GUI 控制功能1.1 自动 防故障功能1.2 停顿功能 2. 鼠标操作2.1 控制鼠标移动2.2 控制鼠标点击2.3 控制鼠标拖动2.4 控制鼠标滚动 3. 屏幕处理3.1 获取屏幕截图3.2 识别图像 4. 键盘输入4.1 键盘输入函数4.2 键盘特殊按键…

EDW 模型设计概念

EDW模型设计概念 1、EDW体系架构 2、为何需要企业模型&#xff1f; 数据集市之间数据一致性&#xff1b;包含全部历史的核心数据&#xff1b;一致的事实表和维度等。 3、 EDW数据模型在项目实施中的作用 4、模型总体结构&#xff0d;EM & DataMarts 5、EDW具体实施流程 …

EDW2016|NOSQL异军突起 阿里首发中国企业好声音

美国西部时间4月17日至4月22日&#xff0c;第20届企业数据世界EDW大会在加利福尼亚州圣迭戈&#xff08;San Diego California&#xff09;呈现了精彩纷呈的六天五晚议程。 EDW大会全称是Enterprise Data World&#xff08;即&#xff1a;企业数据世界&#xff09;&#xff0c…

About EDW时间维度表的建立参考(DWD_CALENDAR)

0. 维度表 1. 创建表 -- Create table create table DWD_CALENDAR (site VARCHAR2(40),factory VARCHAR2(40),period_date DATE,period VARCHAR2(5),shift_start_timekey VARCHAR2(40),shift_end_timekey VARCHAR2(40),dat…

BW:EDW——一次小小的探讨

方其华|北京 2010/9/17 10:46:13 这个有点差别的。我们采用的是EDW的架构。所以到我这里的话。源显示的不是ODS。而是数据源。 郑平深圳 2010/9/17 10:47:04 郑岩|北京(332327496) 2010/9/17 10:50:06 EDW架构&#xff1f; 郑岩|北京(332327496) 2010/9/17 10:50:09 …

EDW DWM CONCEPT

非事实型事实表――factless fact table 在维度建模的数据仓库中&#xff0c;有一种事实表叫Factless Fact Table&#xff0c;中文一般翻译为“非事实型事实表”。在事实表中&#xff0c;通常会保存十个左右的维度外键和多个度量事实&#xff0c;度量事实是事实表的关键所在。…

EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考

在这篇文章中, 将讨论EDW on Hadoop 有哪些备选方案, 以及我个人的倾向性, 最后是建构方法. 欢迎转载, 但必须注明原贴(刘忠武, http://www.cnblogs.com/harrychinese/p/edw_on_hadoop.html). 数据仓库发展已经有二十多年了, 我们先看看数据仓库发展的趋势: 在数据规模小的时…

(转载)浅析ODS与EDW 关系

浅析ODS与EDW 关系 刘智琼 (中国电信集团广州研究院广州510630) 摘要 本文重点介绍了企业运营数据仓储(ODS)和企业数据仓库(EDW )的概念&#xff0c;并对ODS与EDW 之间的关系&#xff0c;包括两者相同点与不同点进行了详尽的对比与阐述&#xff0c;文章还对业界公认的ODS和E…

ETL(一):(详细步骤)使用ETL将源数据抽取到EDW层

1、ETL中4大常用客户端 R客户端主要用于创建文件夹&#xff0c;不同的项目主题&#xff0c;应该放在不同的文件夹中&#xff1b; 2、ETL开发流程 ①~③在D客户端中完成&#xff1b;④和⑤在W客户端中完成&#xff1b;⑥在M客户端中完成&#xff1b; 3、需求 需求一&#xff…

浅析ODS与EDW关系(转载)

背景知识&#xff1a;在当今这样一个信息技术发展迅速的时代&#xff0c;数据量也在不断的增长&#xff0c;面临这样的压力&#xff0c;总是会有大神提出一些解决方案。比如高层管理人员希望能查看整个公司的发展业绩&#xff0c;数据仓库(Data Warehouse, DW)正是解决该问题的…

ODS和EDW

企业运营数据仓储(ODS)和企业数据仓库(EDW ) 企业数据架构 EDW主要为企业提供分析决策服务。ODS主要实现企业数据整合、共享和准实时运营监控等功能&#xff0c;ODS是EDW的一个有益的补充和扩展 其中&#xff0e;ADB为应用数据库&#xff1b;A、B、C表示不同类型的数据流动&am…

浅析ODS与EDW 关系(转载)

摘要 本文重点介绍了企业运营数据仓储(ODS)和企业数据仓库(EDW )的概念&#xff0c;并对ODS与EDW 之间的关系&#xff0c;包括两者相同点与不同点进行了详尽的对比与阐述&#xff0c;文章还对业界公认的ODS和EDW 两种不同建设方法也分别进行了说明&#xff0c;并给出了作者认为…

ODS与EDW的区别

项目github地址&#xff1a;bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star&#xff0c;留言&#xff0c;一起学习进步 根据自己的理解与实际项目经验&#xff0c;说说ODS与EDW的异同。如果有不对的地方&#xff0c;欢迎大家批评指正。 维基百科对于ODS的…

传统数据仓库 DW/EDW/BI/ODS/DM/ETL

DW 数据仓库 数据仓库&#xff0c;英文名称为Data Warehouse&#xff0c;可简写为DW或DWH。数据仓库&#xff0c;是为企业所有级别的决策制定过程&#xff0c;提供所有类型数据支持的战略集合。它是单个数据存储&#xff0c;出于分析性报告和决策支持目的而创建。 为需要业务智…

范式理解(0范式,1范式,2范式)

https://www.zhihu.com/question/20473040 可以从函数、几何与矩阵的角度去理解范数。 我们都知道&#xff0c;函数与几何图形往往是有对应关系的&#xff0c;这个很好想象&#xff0c;特别是在三维以下的空间内&#xff0c;函数是几何图像的数学概括&#xff0c;而几何图像是…

数据库(四):函数依赖和数据库异常,第一范式,第二范式,第三范式,第四范式

文章目录 前言一、函数依赖二、异常三、第一范式四、第二范式五、第三范式六、BC范式 前言 本文转载于&#xff1a;https://zhuanlan.zhihu.com/p/20028672 在阅读本文时&#xff0c;可以把“关系”理解为数据表。此外还有一个“关系模式”的概念。“关系”和“关系模式”的区…

数据库4范式

范式与公理系统 前言一、函数依赖1.部分函数依赖2.完全函数依赖3.传递函数依赖4.码 二、范式1.第一范式&#xff08;1nf&#xff09;2.第二范式&#xff08;2nf&#xff09;判断是否是第二范式 3.第三范式&#xff08;3nf&#xff09;4.BCNF范式6.第四范式多值依赖 总结 前言 …

数据库的第一范式,第二范式,第三范式,BCNF范式理解

第一范式 属性的原子性 所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项&#xff0c;同一列中不能有多个值&#xff0c;即实体中的某个属性不能有多个值或者不能有重复的属性&#xff0c;如果出现重复的属性则需要重新构建实体&#xff0c;新的实体由重复的属性构…