Operación básica del mouse en Python
Directorio de artículos
1. Función de control GUI
Los módulos que se utilizan para controlar el mouse y el teclado son: Cuando pyautogui
este 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'
5.2 Cuadro de selección
import pyautogui
a = pyautogui.confirm('选择一项', buttons=['A', 'B', 'C'])
print(a)
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;
5.4 Entrada normal
import pyautogui
a = pyautogui.prompt('请输入一个数字:')
print(a)
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:
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:
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;
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:
La entrada en Pycharm es la siguiente: