es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy tratando de escribir una macro de teclado y cursor de mouse basada en Python.

¡Hola pessoas de Stackoverflow! Acabo de comenzar mi viaje en la programación y este parece ser el problema que me hace querer rendirme de inmediato xD
Lo siento si esto es algo fácil, pero realmente intenté todo lo que pude posible

Estoy intentando escribir una macro que recuerde la posición del cursor en la pantalla con la tecla ctrl y devuelva el cursor a esa posición con la tecla alt.

import pyautogui
from pynput import keyboard
from contextlib import redirect_stdout

def on_press(key):
if key == keyboard.Key.ctrl_l:
print(pyautogui.position())

with open(“cf.py”, “a”) as f:
with redirect_stdout(f):
print(pyautogui.position())

todo funciona bastante bien hasta que intento obtener los resultados de salida de cf.py en el archivo principal para poder usarlos en la macro alt.

from cf import Point

if key == keyboard.Key.alt_l:
   print(pyautogui.moveTo(Point(x, y)))

if key == keyboard.Key.esc:
    return False

with keyboard.Listener(on_press=on_press) as listener:
listener.join()

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando está relacionado con la importación y el uso de la salida de otro archivo. En tu código, estás redirigiendo la salida al archivo “cf.py”, pero no estás leyendo la salida de vuelta en tu programa principal.

    Para hacer esto, puedes modificar tu archivo “cf.py” para escribir los datos de posición en un archivo de texto en un formato específico (por ejemplo, valores separados por comas) que tu archivo principal pueda leer y utilizar. Por ejemplo:

    import pyautogui
    
    def record_position():
        # Obtener la posición actual del cursor
        pos = pyautogui.position()
        # Escribir los datos de posición en el archivo en formato csv
        with open('position.csv', 'a') as f:
            f.write(f'{pos.x},{pos.y}\n')
    

    Luego, en tu archivo principal, puedes leer los datos de posición del archivo utilizando el módulo csv o simplemente separando los valores por coma. Aquí tienes un ejemplo:

    import pyautogui
    from pynput import keyboard
    
    def on_press(key):
        # Registrar la posición del cursor con la tecla ctrl
        if key == keyboard.Key.ctrl_l:
            record_position()
    
        # Mover el cursor a la posición registrada con la tecla alt
        if key == keyboard.Key.alt_l:
            with open('position.csv', 'r') as f:
                # Leer los últimos datos de posición del archivo
                lines = f.readlines()
                last_pos = lines[-1].strip().split(',')
                x, y = int(last_pos[0]), int(last_pos[1])
            pyautogui.moveTo(x, y)
    
        # Salir del programa con la tecla esc
        if key == keyboard.Key.esc:
            return False
    
    with keyboard.Listener(on_press=on_press) as listener:
        listener.join()
    

    Este código modificado debería permitirte registrar posiciones con la tecla ctrl y mover el cursor de vuelta a una posición registrada con la tecla alt. ¡Espero que esto te ayude!

Comments are closed.