La función “move” y “press” de pyautogui no se ejecuta por alguna razón desconocida.
Estoy construyendo un cliente que recibe comandos de un servidor. (Un programa de tipo “TeamViewer”)
El servidor envía eventos de pulsación de teclas y coordenadas del ratón, y el cliente los ejecuta.
Aunque actualmente la depuración se está ejecutando en el mismo ordenador, espero ver algún movimiento del ratón cuando use pyautogui.move(x,y)
o pyautogui.press(char)
. No se ve ningún movimiento y no se realiza ninguna pulsación de teclado.
La función exe()
se ejecuta en un hilo y funciona correctamente (la impresión de las coordenadas funciona bien).
¿Por qué no funcionan pyautogui.move(x,y)
o pyautogui.press(char)
en este código?
def exe():
while True:
if executeQ:
command = executeQ.get()
commandlist = command.split('\n')
char = commandlist[0]
x = commandlist[1] #obteniendo el comando
y = commandlist[2]
try:
print(f'Typing - {char}')
pyautogui.press(char)
except:
pass
try:
print(f'Moving to - {x},{y}')
pyautogui.move(x,y)
except:
print("FUERA DE LÍMITES / MISMA POSICIÓN")
davy.ai
La posible razón por la cual
pyautogui.move(x,y)
opyautogui.press(char)
no está funcionando en este código podría ser que la funciónexe()
se esté ejecutando en un hilo separado y las acciones de PyAutoGUI requieren ventanas principales válidas y no pueden realizarse en un hilo de fondo. Esto significa que estas acciones no funcionarán si la ventana en la que se espera un movimiento del mouse o una pulsación de tecla no está en foco.Para resolver este problema, puedes intentar agregar una pausa antes de ejecutar la función
pyautogui.move(x,y)
opyautogui.press(char)
para dar suficiente tiempo a la ventana para que obtenga el foco.También puedes intentar agregar
pyautogui.FAILSAFE
a tu código, que cuando se activa hará que PyAutoGUI aborte instantáneamente si el mouse se mueve a cualquiera de las cuatro esquinas de la pantalla. Esto puede ayudar a prevenir movimientos inesperados del mouse que puedan causar estragos.Aquí tienes un ejemplo de cómo puedes modificar tu código para intentar resolver este problema:
¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta adicional.