Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:automatizacion_gui

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:automatizacion_gui [2020/11/05 15:31] – [Control del ratón] tempwininformatica:programacion:python:automatizacion_gui [2020/11/05 15:57] (actual) – [Buscar imagen en pantalla] tempwin
Línea 1: Línea 1:
 ====== Python: Automatización GUI ====== ====== Python: Automatización GUI ======
 +
 +Se llama automatización GUI al control del ratón y teclado.
  
 Se usa el módulo externo **PyAutoGUI** que podemos instalar con pip: ''pip install pyautogui'' Se usa el módulo externo **PyAutoGUI** que podemos instalar con pip: ''pip install pyautogui''
Línea 32: Línea 34:
 </code> </code>
  
-Podemos definir la velocidad a la que se moverá el puntero del ratón a la posición indicada:+Podemos definir cuánto tiempo le llevará moverse a la posición indicada:
  
 <code python> <code python>
Línea 39: Línea 41:
  
 La opción ''duration'' acepta segundos. La opción ''duration'' acepta segundos.
 +
 +Si queremos hacer un movimiento de forma relativa, es decir, movernos tomando como punto inicial la posición actual del ratón y no la esquina superior izquierda de la pantalla, utilizamos el método ''moveRel()'':
 +
 +<code python>
 +pyautogui.moveRel(20, 0)
 +</code>
 +
 +Con el código anterior, el ratón se movería 20 píxeles a la derecha de la posición actual
 +
 +==== Clic ====
 +
 +Un clic:
 +
 +<code python>
 +pyautogui.click(300, 10)
 +</code>
 +
 +Doble clic:
 +
 +<code python>
 +pyautogui.doubleClick(300, 10)
 +</code>
 +
 +Clic con el botón central:
 +
 +<code python>
 +pyautogui.middleClick(300, 10)
 +</code>
 +
 +==== Arrastrar ====
 +
 +<code python>
 +pyautogui.dragTo(100, 0, duration=0.1)
 +</code>
 +
 +Si queremos un movimiento relativo, el método a usar es ''dragRel()''
 +
 +Ejemplo dibujando una espiral cuadrada en Paint:
 +
 +<code python>
 +import pyautogui
 +
 +# Hacemos foto con el programa de dibujo
 +pyautogui.click()
 +
 +distancia = 200
 +
 +while distancia > 0:
 +    pyautogui.dragRel(distancia, 0, duration=0.1) # Mover a la derecha
 +    distancia = distancia - 25
 +    pyautogui.dragRel(distancia, 0, duration=0.1) # Mover abajo
 +    distancia = distancia- 25
 +    pyautogui.dragRel(distancia, 0, duration=0.1) # Mover a la izquierda
 +    distancia = distancia- 25
 +    pyautogui.dragRel(distancia, 0, duration=0.1) # Mover arriba
 +</code>
 +
 +<WRAP center round important 60%>
 +Si alguna vez se pierde el control al estar en ejecución algún método de PyAutoGUI, el módulo tiene una secuencia de parada cuando detecta que el ratón se mueve a las coordenadas (0,0), así que si queremos finalizar un programa de PyAutoGUI, llevamos rápidamente el ratón a la esquina superior izquierda de la pantalla
 +</WRAP>
 +
 ===== Obtener coordenadas del ratón ===== ===== Obtener coordenadas del ratón =====
  
Línea 59: Línea 122:
 Press Ctrl-C to quit. Press Ctrl-C to quit.
 X:  323 Y:  651 RGB: ( 12,  12,  12) X:  323 Y:  651 RGB: ( 12,  12,  12)
 +</code>
 +
 +===== Control de teclado =====
 +
 +==== Escritura ====
 +
 +<code python>
 +import pyautogui
 +
 +pyautogui.typewrite("Hola, mundo")
 +</code>
 +
 +Si queremos hacer una pausa entre cada caracter, para imitar a un humano, podemos añadir el argumento ''interval'':
 +
 +<code python>
 +import pyautogui
 +
 +pyautogui.typewrite("Hola, mundo", interval=0.2)
 +</code>
 +
 +==== Teclas ====
 +
 +<code python>
 +import pyautogui
 +
 +pyautogui.typewrite(['a', 'b', 'left', 'left'])
 +</code>
 +
 +Podemos encontrar un listado de las teclas a usar en esa lista mediante:
 +
 +<code python>
 +pyautogui.KEYBOARD_KEYS
 +</code>
 +
 +Si solo vamos a pulsar una tecla, podemos usar el método ''press()'':
 +
 +<code python>
 +pyautogui.press('f1')
 +</code>
 +
 +Para una combinación de teclas, método ''hotkey()'':
 +
 +<code python>
 +pyautogui.hotkey('ctrl', 'alt', 't')
 +</code>
 +
 +===== Capturar pantalla =====
 +
 +En Windows no hay que hacer nada, pero en Linux necesitamos instalar el paquete ''scrot''
 +
 +<code python>
 +pyautogui.screenshot("/home/usuario/captura.png")
 +</code>
 +
 +==== Buscar imagen en pantalla ====
 +
 +Si tenemos una imagen que queremos comprobar si existe en el escritorio:
 +
 +<code python>
 +pyautogui.locateOnScreen("/home/usuario/imagen-a-buscar.png")
 +
 +# Resultado (si la encuentra)
 +# (907, 316, 50, 41)  # x, y, anchura, altura del elemento
 +</code>
 +
 +Si queremos que la busque y nos devuelva el centro de esa imagen (por si luego queremos usar el ratón):
 +
 +<code python>
 +pyautogui.locateCenterOnScreen("/home/usuario/imagen-a-buscar.png")
 +
 +# Resultado:
 +# (932, 326)
 +
 +pyautogui.moveTo((932, 326))
 +
 +pyautogui.click()
 </code> </code>
informatica/programacion/python/automatizacion_gui.1604586693.txt.gz · Última modificación: por tempwin