Python opera el escritorio de Windows para implementar operaciones de mouse y teclado Explicación detallada de la documentación de la biblioteca pyautogui de Python

I. Descripción general

1. Información general

PyAutoGUI es una herramienta de automatización GUI de Python pura. Su propósito es controlar automáticamente las operaciones del mouse y el teclado con programas. Es compatible con múltiples plataformas (Windows, OS X, Linux).

Dirección del código fuente:https://github.com/asweigart/pyautogui

Documentación oficial:https://github.com/asweigart/pyautogui/blob/master/docs/simplified-chinese.ipynb

PyAutoGUI puede simular el movimiento del mouse, hacer clic, arrastrar, ingresar teclas del teclado, mantener presionadas las operaciones y mantener presionadas las teclas de acceso rápido del mouse + teclado al mismo tiempo.Se puede decir que todas las manos se pueden mover.

PyAutoGUI es compatible con Python 2.x y Python 3.x.

2. Instalación

# Windows:PyAutoGUI没有任何依赖,因为它用Python的ctypes模块所以不需要pywin32
pip install pyautogui

# OS X:PyAutoGUI需要PyObjC运行AppKit和Quartz模块。这个模块在PyPI上的按住顺序是pyobjc-core和pyobjc
sudo pip3 install pyobjc-core
sudo pip3 install pyobjc
sudo pip3 install pyautogui

# Linux:PyAutoGUI需要python-xlib(Python 2)、python3-Xlib(Python 3)
sudo pip3 install python3-xlib
sudo apt-get scrot
sudo apt-get install python-tk
sudo apt-get install python3-dev
sudo pip3 install pyautogui```

Introducido en Python (no se publicará ningún código de importación adicional en códigos de muestra posteriores):

import pyautogui

2. Operación de pantalla

1. Obtén la resolución de la pantalla.

# 获取屏幕分辨率(宽高) Size(width=1920, height=1080)
screenWidth, screenHeight = pyautogui.size()

2. Si una determinada coordenada está en la pantalla

#  (x,y)是否在屏幕上
x, y = 122, 244
pyautogui.onScreen(x, y)

3. Obtenga la posición actual del mouse.

# Point(x=1184, y=744)
pyautogui.position()

3. Operación del mouse

La posición de la pantalla utiliza un sistema de coordenadas cartesiano para los ejes X e Y. El origen (0,0) está en la esquina superior izquierda, aumentando hacia la derecha y hacia abajo respectivamente.

Si los píxeles de la pantalla son 1920 * 1080, entonces las coordenadas de la esquina inferior derecha son (1919, 1079)

1. Mueve el ratón

La función moveTo() moverá el cursor del mouse a las coordenadas del eje XY especificadas. Si se pasa un valor Ninguno, significa usar 当前el valor de coordenadas del eje del objeto del cursor.

pyautogui.moveTo(100, 200)     # 光标移动到(100, 200)位置
pyautogui.moveTo(None, 500)   # 光标移动到(100, 500)位置
pyautogui.moveTo(600, None)   # 光标移动到(600, 500)位置

Generalmente, el cursor del mouse se mueve a la posición especificada instantáneamente. Si desea que el mouse se mueva más lento, puede configurar la duración: la duración
predeterminada pyautogui.MINIMUM_DURATIONes 0,1 segundos. Si configura el tiempo más corto que el valor predeterminado, lo hará instantáneamente. .

pyautogui.moveTo(100, 200, duration=2)     # 用2秒把光标移动到(100, 200)位置

Si desea que el cursor se mueva en relación con la posición actual como origen, use la función pyautogui.moveRel(). Por ejemplo:


pyautogui.moveTo(100, 200) #把光标移动到(100, 200)位置
pyautogui.moveRel(0, 50)   #向下移动50
pyautogui.moveRel(30, 0, 2)   #向右移动30
pyautogui.moveRel(30, None)   #向右移动30

#  用num_seconds秒的时间把光标的X轴(水平)坐标移动xOffset,
#  Y轴(竖直)坐标向下移动yOffset。
xOffset, yOffset = 50, 100
pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)

#  用缓动/渐变函数让鼠标2秒后移动(500,500)位置
pyautogui.moveRel(500, 500, duration=2, tween=pyautogui.easeInOutQuad)

2. Haga clic en operación

Para mayor comodidad de operación, PyAutoGUI proporciona doubleClick(), tripleClick() y rightClick() para implementar operaciones de doble clic, triple clic y clic derecho.

# 在鼠标位置单击
pyautogui.click()
# 在鼠标位置双击
pyautogui.doubleClick()

# click()函数就是让鼠标点击,默认是单击左键,参数可以设置:button属性可以设置成left,middle和right
pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

#如果单机之前要先移动,可以把目标的XY坐标值传入函数:
#  先移动到(100, 200)再单击
pyautogui.click(x=100, y=200, duration=2)

# 所有的点击都可以用这个函数,不过下面的函数可读性更好:
pyautogui.rightClick(x=moveToX, y=moveToY)
pyautogui.middleClick(x=moveToX, y=moveToY)
pyautogui.doubleClick(x=moveToX, y=moveToY)
pyautogui.tripleClick(x=moveToX, y=moveToY)

# 可以通过button参数设置left,middle和right三个键。例如:
pyautogui.click(button='right')

# 要做多次单击可以设置clicks参数,还有interval参数可以设置每次单击之间的时间间隔。例如:
#  双击左键
pyautogui.click(clicks=2)
#  两次单击之间停留0.25秒
pyautogui.click(clicks=2, interval=0.25)
#  三击右键
pyautogui.click(button='right', clicks=2, interval=0.25)


Las funciones mouseDown() y mouseUp() pueden implementar operaciones de presionar y soltar el mouse. Ambos tienen los mismos parámetros, x, y y botón. Por ejemplo:

# 鼠标每个按键按下和松开两个事件可以分开处理:
pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')
#  鼠标左键按下再松开
pyautogui.mouseDown(); pyautogui.mouseUp() 
#  按下鼠标右键
pyautogui.mouseDown(button='right') 
#  移动到(100, 200)位置,然后松开鼠标右键
pyautogui.mouseUp(button='right', x=100, y=200) 

3. Operación del rodillo

El desplazamiento de la rueda del mouse se puede simular usando la función scroll() y los parámetros de número de clics. La cantidad de clics en diferentes plataformas es diferente. También hay parámetros xey que se pueden colocar en la posición (x, y) antes de desplazarse. Por ejemplo:

# scroll函数控制鼠标滚轮的滚动,amount_to_scroll参数表示滚动的格数。正数则页面向上滚动,负数则向下滚动:
pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY)
#  向上滚动10格
pyautogui.scroll(10)
#  向下滚动10格
pyautogui.scroll(-10)
#  移动到(100, 100)位置再向上滚动10格
pyautogui.scroll(10, x=100, y=100)

En las plataformas OS X y Linux, PyAutoGUI también puede usar hscroll() para lograr el desplazamiento horizontal. Por ejemplo:

#  向右滚动10格
pyautogui.hscroll(10)
#  向左滚动10格
pyautogui.hscroll(-10)

La función scroll() es un contenedor de vscroll() y realiza un desplazamiento vertical.

4. Grabar subprograma de cursor

# ! python 3
import pyautogui
print('Press Ctrl-C to quit')
try:
    while True:
        x, y = pyautogui.position()
        positionStr = 'X: {} Y: {}'.format(*[str(x).rjust(4) for x in [x, y]])
        print(positionStr, end='')
        print('\b' * len(positionStr), end='', flush=True)
except KeyboardInterrupt:
    print('\n')

5. Arrastre del mouse

Las funciones dragTo() y dragRel() de PyAutoGUI son similares a las funciones moveTo() y moveRel(). Además, tienen un parámetro de botón que se puede configurar para las teclas izquierda, central y derecha. Por ejemplo:

#  按住鼠标左键,把鼠标拖拽到(100, 200)位置
pyautogui.dragTo(100, 200, button='left')
#  按住鼠标左键,用2秒钟把鼠标拖拽到(300, 400)位置
pyautogui.dragTo(300, 400, 2, button='left')
#  按住鼠标右键,用2秒钟把鼠标拖拽到(30,0)位置
pyautogui.dragTo(30, 0, 2, button='right')

6. Función de interpolación/alivio

El propósito de la función de suavizado/gradiente es hacer que el movimiento del cursor sea más deslumbrante. Puede ignorarlos si no los necesita.

La función de suavizado/gradiente puede cambiar la velocidad y dirección del movimiento del cursor. Por lo general, el mouse se mueve en línea recta a una velocidad constante, que es la función de atenuación/gradiente lineal. PyAutoGUI tiene 30 funciones de suavizado/degradado, que se pueden pyautogui.ease*?ver. Entre ellas, pyautogui.easeInQuad()la función se puede utilizar para las funciones moveTo (), moveRel (), dragTo () y dragRel (). El cursor se mueve primero lentamente y luego rápidamente, y todo el tiempo del proceso sigue siendo el mismo que antes. La función tiene el efecto contrario pyautogui.easeOutQuad: el cursor comienza a moverse muy rápido y luego se ralentiza lentamente. pyautogui.easeOutElasticEs un efecto de resorte que primero cruza el punto final y luego rebota. Por ejemplo:

#  开始很慢,不断加速
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)

99. Medidas de protección (FAILSAFE)

En ese momentopyautogui.FAILSAFE = True , si el cursor del mouse estuviera en la esquina superior izquierda de la pantalla, la función PyAutoGUI generaría pyautogui.FailSafeExceptionuna excepción. Si se sale de control y necesita interrumpir la función PyAutoGUI, coloque el cursor del mouse en la esquina superior izquierda de la pantalla. Para desactivar esta función, establezca FAILSAFE en Falso:

pyautogui.FAILSAFE = False

99. Retraso de operación (PAUSA)

pyautogui.PAUSEPuede agregar un retraso a todas las funciones de PyAutoGUI configurándolo en tiempo flotante o int (segundos). El tiempo de retardo predeterminado es 0,1 segundos. Esto puede hacer que PyAutoGUI se ejecute más lento cuando se ejecuta el bucle de función, lo cual es muy útil. Por ejemplo:

pyautogui.PAUSE = 2.5
pyautogui.moveTo(100,100); pyautogui.click()

Todas las funciones de PyAutoGUI se bloquean hasta que se completa el retraso. (Los planes futuros incluyen agregar un modo sin bloqueo opcional para llamar a funciones).

建议PAUSE和FAILSAFE一起使用。

4. Operación del teclado

1. Operación de entrada

La función principal del control del teclado es escribir (). Esta función puede implementar la entrada de caracteres. Para aumentar el intervalo de tiempo entre dos entradas, puede utilizar el parámetro de intervalo. Por ejemplo:

#  输入Hello world!
pyautogui.typewrite('Hello world!')
#  每次输入间隔0.25秒,输入Hello world!
pyautogui.typewrite('Hello world!', interval=0.25)

# 多个键也可以:
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys)

2. Operación clave

# 按下并抬起esc
pyautogui.press('esc')
# 按下shift(一直按着)
pyautogui.keyDown('shift')
# 连续操作
pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
# 抬起shift
pyautogui.keyUp('shift')
# 组合键 : ctrl+c
pyautogui.hotkey('ctrl', 'a') # 全选
pyautogui.hotkey('ctrl', 'c') # 复制
pyautogui.hotkey('ctrl', 'v') # 粘贴

3. Lista de botones:

pyautogui.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']

5. Ventana emergente de mensaje

Si necesita un mensaje emergente, pausar el programa haciendo clic en Aceptar o mostrar alguna información al usuario, la función de mensaje emergente tendrá funciones similares a JavaScript:

pyautogui.alert('这个消息弹窗是文字+OK按钮')
pyautogui.confirm('这个消息弹窗是文字+OK+Cancel按钮')
# 在prompt()函数中,如果用户什么都不输入,就会返回None。
pyautogui.prompt('这个消息弹窗是让用户输入字符串,单击OK')

1. función de alerta ()

Muestra un mensaje emergente simple con texto y un botón Aceptar. Devuelve el texto del botón después de que el usuario hace clic en él.

pyautogui.alert(text='text内容', title='title内容', button='OK')

2. función confirmar ()

Muestra una ventana emergente de mensaje simple con texto, botones Aceptar y Cancelar. Después de que el usuario hace clic, devuelve el texto del botón en el que hizo clic. Admite listas personalizadas de números y texto.

#  OK和Cancel按钮的消息弹窗
pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])
#  10个按键0-9的消息弹窗
pyautogui.confirm(text='', title='', buttons=range(10))

3. función rápida ()

Una ventana emergente de mensaje a la que se puede ingresar, con los botones Aceptar y Cancelar. El usuario hace clic en el botón Aceptar para regresar al texto ingresado y hace clic en el botón Cancelar para regresar None.

pyautogui.prompt(text='', title='' , default='')

4. función contraseña ()

El estilo es el mismo que el símbolo (), utilizado para ingresar la contraseña, y el mensaje está representado por *. Con botones Aceptar y Cancelar. El usuario hace clic en el botón Aceptar para devolver el texto ingresado y hace clic en el botón Cancelar para devolver Ninguno.

pyautogui.password(text='', title='', default='', mask='*')

6. Función de captura de pantalla

PyAutoGUI utiliza la biblioteca Pillow/PIL para implementar operaciones y reconocimiento relacionados con imágenes.

En Linux, debe ejecutar sudo apt-get install scrotpara utilizar la función de captura de pantalla.

1. Procesamiento de imágenes

#  返回一个Pillow/PIL的Image对象
pyautogui.screenshot()
pyautogui.screenshot('foo.png')

# 如果你有一个图片文件想在上面做点击操作,你可以用locateOnScreen()函数来定位。
#  返回(最左x坐标,最顶y坐标,宽度,高度) (0, 1040, 48, 40)
pyautogui.locateOnScreen('pyautogui/looks.png')

# locateAllOnScreen()函数会寻找所有相似图片,返回一个生成器: (0, 1040, 48, 40)
for i in pyautogui.locateAllOnScreen('pyautogui/looks.png'):
    print(i)
list(pyautogui.locateAllOnScreen('pyautogui/looks.png')) # [(0, 1040, 48, 40)]

# locateCenterOnScreen()函数会返回图片在屏幕上的中心XY轴坐标值:(24, 1060)
pyautogui.locateCenterOnScreen('pyautogui/looks.png')

Si no se encuentra ninguna imagen, se devolverá Ninguna.

El posicionamiento es relativamente lento y suele tardar entre 1 y 2 segundos.

Supongo que te gusta

Origin blog.csdn.net/A_art_xiang/article/details/132844710
Recomendado
Clasificación