press python python-3.4 pyautogui

python - press - pyautogui.locateCenterOnScreen() devuelve Ninguno en lugar de coordenadas



python mouse position (5)

¿Está seguro de que la imagen es del mismo tamaño que el icono?

Si no pyautogui.locateCenterOnScreen() generará TypeError: ''NoneType'' object is not iterable

También asegúrese de que el icono completo esté visible y se vea igual que la imagen: "C:/Users/Venkatesh_J/PycharmProjects/mouse_event/mouse_event.png"

Espero que el problema esté resuelto!

import pyautogui print (pyautogui.locateCenterOnScreen("C:/Users/Venkatesh_J/PycharmProjects/mouse_event/mouse_event.png"))

En lugar de devolver las coordenadas, devuelve None .


A partir de lo que dijo Don Kirby, no se encontró ninguna imagen coincidente en la pantalla . Podría abrir la imagen, por ejemplo, en la Galería fotográfica de Windows (o Tk ) y luego pyautogui encontraría.


El problema inicial es bastante simple: la biblioteca no encuentra la imagen que se pasa representada en la pantalla y, por lo tanto, devuelve None lugar de las coordenadas como dice en los documentos .

Sin embargo, existe un posible malentendido aquí, en particular por parte de un usuario que publicó una recompensa por la pregunta y planteó una pregunta similar aquí. . Se hizo un comentario

"Las fotos están en mi escritorio"

Cuando usas esta función, pasas un nombre de archivo como una cadena. La biblioteca luego carga el archivo de imagen y busca la imagen en la pantalla (no el nombre del archivo). pyautogui.locatecentreonscreen() buscará la imagen real si está visible en la pantalla. No busca archivos en el escritorio, o iconos de archivos con el mismo nombre que la imagen que se le pasó.

Ejemplo

Supongamos que tiene un archivo con el nombre flower.jpg contiene la siguiente imagen, guardado en su escritorio.

Sin otras ventanas abiertas, ejecute:

coords = pyautogui.locateCenterOnScreen(''C://Richard//Users//flower.jpg'') print(coords)

El resultado es None

Esto se debe a que esa imagen no se muestra en mi pantalla a pesar de que hay un icono en el escritorio, con el nombre flower.jpg . Esto es cierto incluso si ese icono es una versión a pequeña escala de la flor.

Sin embargo, si dejo la imagen visible (mientras preparo esta publicación) y hago lo mismo, obtengo las coordenadas, por ejemplo:

Como ve, ya que la imagen real está en la pantalla, la biblioteca la encuentra, con coordenadas 524,621

En resumen, si la biblioteca no encuentra la imagen que se muestra al usuario en la pantalla, devolverá Ninguno. Tenga en cuenta que la imagen debe ser visible para el usuario en el punto en el que se está ejecutando el código. No encontrará el ícono en su escritorio, o similar, o la imagen en una ventana que está "oculta" detrás de otra. ¿Es eso lo que estás tratando de hacer?


Mi problema está resuelto cuando tomé la captura de pantalla con la función incorporada de pyautogui en lugar de tomar WIN + Printscr porque si tomamos la captura de pantalla con WIN + Printscr, entonces la densidad de píxeles y otros datos relacionados con la imagen pueden ser diferentes en comparación con la función incorporada de pyautogui. Puede ser que esto funcionó para ti para mí, funcionó para Ex - wifi.png así que primero tomé la captura de pantalla completa y la recorté de esa imagen completa, luego puse esto en el código que se muestra a continuación

import pyautogui print(pyautogui.locateCenterOnScreen(''wifi.png''))


Parece que no pudo encontrar nada que coincida con su imagen en la pantalla.

locateCenterOnScreen(image, grayscale=False) : devuelve las coordenadas (x, y) del centro de la primera instancia encontrada de la imagen en la pantalla. Devuelve Ninguno si no se encuentra en la pantalla.