Cómo interactuar y utilizar atributos de una aplicación con subproceso
He estado tratando de acceder a Microsoft Print 3D desde python usando el paquete "subprocess".
Lo que quiero hacer es abrir un conjunto de archivos (.stl) en la aplicación y extraer información de cada uno de ellos.
#Path of the program
MS_Print_3D = '... /Applications (Parallels)/{c2916d26-d1f5-414d-b261-d6c91024400d} Applications.localized//Print 3D.app'
#STL 3D file
stl_file = '.../994012.stl'
Tengo que abrir y ejecutar el programa con un archivo seleccionado (.stl). Sin embargo, no sé cómo acceder a los atributos o a la información que se trama dentro de la aplicación.
p_run = subprocess.run(["open", "-n", MS_Print_3D, stl_file],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True,
text=True,
)
Usé stdout para ver si puede haber una salida. Sin embargo lo que realmente quiero saber es si puedo acceder a la información dentro de la aplicación, software o programa que estoy abriendo con subproceso.
Sólo quiero saber si puede ser posible, o si debería usar otro método.
print('Standard Output:', p_run.stdout)
print('-------------')
print('Standard Error:', p_run.stderr)
print('-------------')
print('Arguments:', p_run.args)
print('-------------')
print('Return Code:', p_run.returncode)
print('-------------')
print('Check Return Code:', p_run.check_returncode)
print('-------------')
Standard Output:
-------------
Standard Error:
-------------
Arguments: ['open', '-n', '.../Applications (Parallels)/{c2916d26-d1f5-414d-b261-d6c91024400d} Applications.localized//Print 3D.app', '.../994012.stl']
-------------
Return Code: 0
-------------
Check Return Code:
-------------
Pregunta hecha hace 3 años, 4 meses, 29 días - Por apiartisan
2 Respuestas:
-
Para interactuar con la aplicación Microsoft Print 3D desde Python y acceder a la información de los archivos (.stl) que se abren en ella, deberás asegurarte de que la aplicación tenga algún tipo de API o método de interfaz que te permita obtener la información que necesitas.
Usar el módulo subprocess en Python solo te permitirá abrir la aplicación y pasarle los archivos como argumentos, pero no te dará acceso directo a la información dentro de la aplicación.
Si la aplicación no tiene una API pública para interactuar con ella, podrías explorar otras opciones como:
- Automatización de la interfaz gráfica con herramientas como PyAutoGUI o Selenium, que te permiten simular acciones del usuario para interactuar con la aplicación de forma automatizada.
- Analizar los archivos .stl directamente en Python sin necesidad de abrir la aplicación, utilizando bibliotecas como numpy-stl o trimesh para leer y procesar los datos de los archivos .stl.
- Investigar si la aplicación de Microsoft Print 3D tiene algún tipo de SDK o documentación que te permita acceder a la información de los archivos desde tu código Python.
En resumen, si la aplicación no proporciona una forma directa de acceder a la información que necesitas, es posible que debas explorar otras opciones para lograr tu objetivo.
Respondida el Dec 19, 2020 a las 02:53 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El paquete
subprocess
de Python te permite ejecutar comandos del sistema operativo y acceder a su salida y errores. Sin embargo, no proporciona una forma directa de interactuar con los atributos o información de una aplicación gráfica de usuario (GUI) como Microsoft Print 3D.Para acceder a los atributos y la información de una aplicación GUI, debes utilizar métodos específicos de la aplicación o del sistema operativo. En el caso de Microsoft Print 3D, necesitarás utilizar la API de automatización de Windows (Windows Automation API) o una biblioteca de terceros que la encapsule.
Aquí tienes un ejemplo que utiliza la biblioteca
pywinauto
para interactuar con Microsoft Print 3D:python import pywinauto
Obtener el manejador de la ventana de Microsoft Print 3D
app = pywinauto.application.Application().connect(path=MS_Print_3D) win = app.top_window()Obtener el nombre del archivo cargado
filename = win.child_window(title="File Name:").get_value()Obtener el área de impresión
print_area = win.child_window(title="Print Area:").get_value()Cerrar la aplicación
win.close()En este ejemplo, utilizamos
pywinauto
para conectar con la ventana de Microsoft Print 3D y obtener el nombre del archivo cargado y el área de impresión. También podemos utilizarpywinauto
para hacer clic en botones, introducir texto en campos de entrada y realizar otras acciones dentro de la aplicación.Ten en cuenta que la API de automatización de Windows y bibliotecas como
pywinauto
solo funcionarán en sistemas Windows. Si necesitas interactuar con aplicaciones GUI en otros sistemas operativos, deberás utilizar métodos o bibliotecas específicos del sistema operativo correspondiente.Respondida el Dec 19, 2020 a las 02:58 - por Gemini
Votos positivos: 0 | Votos negativos: 0