Módulo pyautogui basado en Python (resumen detallado de las operaciones del mouse y el teclado)

Operación básica del mouse en Python

1. Función de control GUI

Los módulos que se utilizan para controlar el mouse y el teclado son: Cuando pyautoguieste módulo opera el mouse y el teclado, es muy rápido, y si el módulo controla el mouse, el programa es más difícil de cerrar. En este momento, tenemos dos métodos específicos para las situaciones anteriores:

1.1 Función automática de seguridad

pyautogui.FAILSAFE =False  

Por defecto, esta función es Verdadera Esta función significa: cuando el puntero del mouse se encuentra en la parte superior de la pantalla, el programa informará un error, el propósito es evitar que el programa se detenga;

1.2 Función de pausa

pyautogui.PAUSE = 1    

Significa que todos los comandos pyautogui deben pausarse durante un segundo; otros comandos no se pausarán; hacerlo puede evitar que las operaciones del teclado y el mouse sean demasiado rápidas;

2. Funcionamiento del mouse

2.1 Controlar el movimiento del mouse

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

print(pyautogui.size())   # 返回所用显示器的分辨率; 输出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height)  # 1920 1080

2. Mueve el mouse

  • Mover a la ubicación especificada
pyautogui.moveTo(100,300,duration=1)   

Mueva el mouse a las coordenadas especificadas; la función de duración es establecer el tiempo de movimiento, todas las funciones de la interfaz gráfica de usuario tienen este parámetro, y todas son parámetros opcionales;

  • Moverse en dirección
pyautogui.moveRel(100,500,duration=4)   # 第一个参数是左右移动像素值,第二个是上下,

Mueve 100px hacia la derecha y 500px hacia abajo. Este proceso dura 1 segundo;

3. Obtenga la posición del mouse

print(pyautogui.position())   # 得到当前鼠标位置;输出:Point(x=200, y=800)

2.2 Control del clic del mouse

  • Click del raton
# 点击鼠标
pyautogui.click(10,10)   # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left')  # 单击左键
pyautogui.click(1000,300,button='right')  # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中间
  • Haga doble clic en el mouse
pyautogui.doubleClick(10,10)  # 指定位置,双击左键
pyautogui.rightClick(10,10)   # 指定位置,双击右键
pyautogui.middleClick(10,10)  # 指定位置,双击中键
  • Haga clic y suelte
pyautogui.mouseDown()   # 鼠标按下
pyautogui.mouseUp()    # 鼠标释放

2.3 Control de arrastre del mouse

  • Arrastra a la posición especificada
pyautogui.dragTo(100,300,duration=1)   

Arrastre el mouse a las coordenadas especificadas; la función de duración es establecer el tiempo de movimiento, todas las funciones de la interfaz gráfica de usuario tienen este parámetro y todas son parámetros opcionales;

  • Arrastra en dirección
pyautogui.dragRel(100,500,duration=4)   # 第一个参数是左右移动像素值,第二个是上下,

Arrastre 100px hacia la derecha y 500px hacia abajo. Este proceso dura 1 segundo;

2.4 Controlar el desplazamiento del mouse

La función para controlar el desplazamiento del mouse es scroll (), pasando un parámetro entero, indicando cuántas unidades se desplazarán hacia arriba o hacia abajo, la unidad varía según el sistema operativo;

pyautogui.scroll(300)  # 向下滚动300个单位;

3. Procesamiento de pantalla

3.1 Tomar capturas de pantalla

Controlamos el funcionamiento del mouse y no se puede realizar a ciegas, por lo que necesitamos monitorear el contenido en la pantalla para decidir si realizar la operación correspondiente.pyautogui proporciona un método de captura de pantalla () que puede devolver un objeto de imagen de Pillow;

Hay tres funciones de uso común:

im = pyautogui.screenshot(): Devuelve la captura de pantalla de la pantalla, que es un objeto de imagen Pillow
im.getpixel((500, 500)): devuelve el color del píxel en (500, 500) en el objeto im, que es una tupla RGB
pyautogui.pixelMatchesColor(500,500,(12,120,400)): es una función de contraste y la comparación está en la pantalla (500, 500) ¿Es el color del píxel en este punto el mismo que el del elemento dado?

im = pyautogui.screenshot()
im.save('屏幕截图.png')

Guarde la captura de pantalla;

3.2 Reconocimiento de imágenes

Primero, necesitamos obtener una captura de pantalla. Por ejemplo, si queremos dar me gusta, primero guardamos la imagen del pulgar; luego usamos la función: localizarOnScreen ('zan.png'), si se puede encontrar la imagen, devuelva la ubicación de la imagen , Por ejemplo: Cuadro (izquierda = 25, superior = 703, ancho = 22, alto = 22); si no se puede encontrar la imagen, devuelve Ninguno;
si hay varias imágenes en la pantalla que pueden coincidir, debe usar LocateAllOnScreen ('zan .png '), si coinciden varios valores, se devuelve una lista, como sigue:

import pyautogui
pyautogui.PAUSE = 1

# 图像识别(一个)
btm = pyautogui.locateOnScreen('zan.png')
print(btm)  # Box(left=1280, top=344, width=22, height=22)

# 图像识别(多个)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm))  # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]

pyautogui.center((left, top, width, height))Regrese al punto central de la posición especificada; de esta manera, podemos hacer clic con la operación del mouse para encontrar el centro de la imagen; ejemplo de referencia: "4.4 Programa Me gusta automático"

4. Entrada de teclado

4.1 Función de entrada de teclado

pyautogui.keyDown(): Simular
pyautogui.keyUp()pulsación de tecla
pyautogui.press();: Simular liberación de tecla ;: # es para llamar a keyDown () & keyUp () para simular una pulsación de tecla ;: El
pyautogui.typewrite('this',0.5)primer parámetro es el contenido de entrada, y el segundo parámetro es el tiempo de intervalo entre cada carácter
pyautogui.typewrite(['T','h','i','s']);: typewrite También puede pasar una lista de una sola letra;

Por ejemplo:

pyautogui.keyDown('shift')    # 按下shift
pyautogui.press('4')    # 按下 4
pyautogui.keyUp('shift')   # 释放 shift

Salida: $;

pyautogui.typewrite('$$$$', 0.5)

Salida lenta: $$$

4.2 Teclas especiales del teclado

A veces necesitamos ingresar algunas teclas especiales, como la flecha izquierda, que están representadas por la cadena de teclado correspondiente, por ejemplo:

pyautogui.typewrite(['T','i','s','left','left','h',])   # 输出:This

Explicación: La izquierda aquí es la flecha a la izquierda; hay muchas otras cadenas de teclado, consulte la siguiente tabla:

Cadena de teclado Descripción
entrar (o volver o \ n) Retorno de carro
Esc ESC
cambio de marchas, cambio de marchas Teclas SHIFT izquierda y derecha
altleft, altright Teclas ALT izquierda y derecha
ctrlleft, ctrlright Teclas CTRL izquierda y derecha
pestaña (\ t) TAB 键
retroceso, borrar RETROCESO 、 BORRAR 键
pageup, pagedown PÁGINA ARRIBA 和 PÁGINA ABAJO 键
casa, fin Teclas INICIO y FIN
arriba abajo izquierda derecha Teclas de flecha
f1, f2, f3 ... f12 F1 …… .F12 tecla
volumen mudo, bajar volumen, subir volumen El sonido se vuelve más alto y más bajo (algunos teclados no lo hacen)
pausa Tecla de pausa, tecla de pausa
Bloq Mayús Tecla CAPS LOCK
Num lock Tecla NUM LOCK
scrolllock Tecla SCROLLLOCK
insertar INSERT clave
imprimir pantalla Tecla PRINT SCREEN
winleft, winright Win 键 (windows)
mando tecla de comando (Mac OS X)
opción opción (Mac OS X)

4.3 Teclas de acceso directo

Si necesitamos simular la tecla de atajo de copia ctrl+ c, si usamos el método anterior, el código es:

pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')

El orden de presionar y soltar las teclas de atajo es muy importante. En este momento, podemos usar pyautogui.hotkey (). Esta función puede aceptar múltiples parámetros, presionarlos en el orden en que se pasan y soltarlos en orden inverso. La tecla de acceso directo anterior ctrl+ cpuede cambiar el código a:

pyautogui.hotkey('ctrl','c')

5. Cuadro de mensaje rápido

5.1 Cuadro de aviso / Cuadro de advertencia

import pyautogui
a = pyautogui.alert(text='This is an alert box.', title='Test')
print(a)

La salida es la siguiente: Haga clic en Aceptar, el valor de retorno es 'Aceptar'
Inserte la descripción de la imagen aquí

5.2 Cuadro de selección

import pyautogui
a = pyautogui.confirm('选择一项', buttons=['A', 'B', 'C'])
print(a)

Inserte la descripción de la imagen aquí
La salida es la siguiente: Haga clic en la opción B, el valor de retorno es 'B'

5.3 Entrada de contraseña

import pyautogui

a = pyautogui.password('Enter password (text will be hidden)')
print(a)

El resultado es el siguiente: Ingrese la contraseña, se mostrará como texto cifrado, haga clic en Aceptar y el valor de retorno será el valor que acaba de ingresar;
Inserte la descripción de la imagen aquí

5.4 Entrada normal

import pyautogui

a = pyautogui.prompt('请输入一个数字:')
print(a)

Inserte la descripción de la imagen aquí
El resultado es el siguiente: mostrar como texto sin formato, haga clic en Aceptar, el valor de retorno es el valor que acaba de ingresar;

6. Ejemplos

6.1 Ratón de control del ratón para dibujar un cuadrado

for i in range(2):   # 画正方形
    pyautogui.moveTo(200,200,duration=1)
    pyautogui.moveTo(200,400,duration=1)
    pyautogui.moveTo(400,400,duration=0.5)
    pyautogui.moveTo(400,200,duration=2)
	

6.2 Obtener la posición del mouse en tiempo real

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:Zhang Kai time:

import pyautogui
import time

try:
    while True:
        x,y = pyautogui.position()
        posi = 'x:' + str(x).rjust(4) + ' y:' + str(y).rjust(4)
        print('\r',posi,end='')
        time.sleep(0.5)

except KeyboardInterrupt:
    print('已退出!')

efecto de visualización:
Inserte la descripción de la imagen aquí

6.3 Obtener el color de la posición del mouse y la posición

import pyautogui
import time

try:
    while True:
        x,y = pyautogui.position()
        rgb = pyautogui.screenshot().getpixel((x,y))
        posi = 'x:' + str(x).rjust(4) + ' y:' + str(y).rjust(4) + '  RGB:' + str(rgb)
        print('\r',posi,end='')
        time.sleep(0.5)

except KeyboardInterrupt:
    print('已退出!')

efecto de visualización:
Inserte la descripción de la imagen aquí

6.4 Programa de Me gusta automático

Necesitamos dar me gusta a todos los artículos. Una vez que los me gusta en esta página hayan terminado, mueva el mouse para que me gusten todos los artículos recién cargados;

Inserte la descripción de la imagen aquí
el código se muestra a continuación:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:Zhang Kai 

import pyautogui
import time


def zan():
    time.sleep(0.5)    # 等待 0.5 秒
    left, top, width, height = pyautogui.locateOnScreen('zan.png')   # 寻找 点赞图片;
    center = pyautogui.center((left, top, width, height))    # 寻找 图片的中心
    pyautogui.click(center)    # 点击
    print('点赞成功!')


while True:
    if pyautogui.locateOnScreen('zan.png'):
        zan()   # 调用点赞函数
    else:
        pyautogui.scroll(-500)    # 本页没有图片后,滚动鼠标;
        print('没有找到目标,屏幕下滚~')

Después de ejecutarlos, les gustará uno por uno:
Inserte la descripción de la imagen aquí
La entrada en Pycharm es la siguiente:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47139649/article/details/109259533
Recomendado
Clasificación