¿Cómo usar coordenadas relativas con autopy?

Hola.

estoy aprendiendo a crear script con atajos de mouse programados, para ello estoy usando la librería “autopy”. El punto es que solo puedo crear coordenadas apsolutas, lo cual depende de la resolución de cada pantalla. ¿Cómo puedo ahcer para fijar coordenadas de pantalla relativas a los bordes de la ventana en que se tenga el foco?. No encuentro como hacerlo únicamente con autopy, según yo no es posible, de ser así, ¿hay algún módulo que complemente o sustituya a autopy para hacer lo que necesito?. Me gusta autopy por su simpleza, pero si hay alguna otra recomendación bienvenida.

un gran saludo.

Hola, recien leo esto.

Yo hace tiempo tuve que hacer algo similar, en ese entonces usé pyautogui y lo que hice fue buscar visualmente en la pantalla el elemento que me interesa para obenter sus coordenadas, por ejemplo capturaba y guardaba la imagen de un boton (button1.png) (era una desktop app )y luego con pyautogui.locateAllOnScreen(‘button1.png’) obtenia sus coordenadas.

En ese entonces no encontre una mejor manera de hacer esto, si encontras algo mejor, comentanos.

Saludos

Hola, muchas gracias.

Voy a chequear pyautogui. De momento lo que he tenido que hacer es tirar del lenguaje autohotkey, cumple bien con lo que necesito, aunque me interesa poder hacerlo desde Python. Hay un módulo llamado “ahk” el cual permite usar autohotkey desde Python, pinta bien, pero mi ignorancia no me permitió entender bien la ayuda del módulo, lista un montón de clases, pero no logro entender bien como usarlas.

Un saludo.

No parece haber esa funcionalidad, supongo que porque no sería fácil de hacer portable. Si querés limitarte a Windows (o implementar varias versiones del programa) lo que podrías hacer es usar las librerias de win32gui: buscás la ventana por nombre[0] y con ese handle podés buscar la posición[1] y el tamaño [2]; también tenés un par de helpers para convertir coordenadas locales <-> globales

[0] http://timgolden.me.uk/pywin32-docs/win32gui__FindWindowEx_meth.html
[1] http://timgolden.me.uk/pywin32-docs/win32gui__GetCurrentPositionEx_meth.html
[2] http://timgolden.me.uk/pywin32-docs/win32gui__GetClientRect_meth.html
[3] http://timgolden.me.uk/pywin32-docs/win32gui__ScreenToClient_meth.html

Ah bien. Gracias por los enlaces, me interesa esto que mencionas.

Un saludo.

Hola! En qué sistema operativo? En escritorios Linux se podría obtener las coordenadas de la ventana mediante llamadas a D-Bus.