Ayuda como integrar *.py en C#

Iniciado por aketxe63, 25 Diciembre 2021, 21:39 PM

0 Miembros y 2 Visitantes están viendo este tema.

aketxe63

Hola estoy bastante perdido, quisiera saber como integrar un *.py en un form de C#, os agradezco vuestra ayuda.
Muchas gracias

Meta

Hola:

¿Exactamente qué te refieres?

¿Adaptar código de Python a C#?

¿Añadir código de Python de un archivo externo o un trozo de código directamente etiquetado incrustado en C# por medio?

¿Una dll hecho con Python (que yo sepa no se puede) y lo lee C#?

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

aketxe63

Gracias Meta.

La idea es integrar un formulario de Python dentro de otro formulario de C#, es decir, he creado un formulario de Python con extensión *.py y otro formulario de C# con extensión *.cs, quiero insertar el formulario de Python dentro de un contenedor tipo panel alojado en el formulario de C# y que se puedan entender entre ellos, que la información captura en el formulario de Python la pueda tratar el formulario de C#.

Meta

Hola:

Así sin más nunca lo he hecho. Lo que he hecho y hice un documento, es crear una dll de C++ nativo y que lo lea C#. O lo que es lo mismo de lo que quieres hacer.

Crear una dll hecho con Python y lo lea C#.

Revisa el documento si es así lo que deseas. En este ejemmplo es mostrar un texto y una suma cuya funciones está en C++ con una dll y C# lo llama para mostrar los datos. También se puede crear controles visuales.

Es así lo más parecido que te puedo ayudar.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

aketxe63

Quizás tendría que haberme explicado mejor, te comento.

Estoy desarrollando un software de decodificación de señales digitales y tengo una FFT creada en Python, la idea era incrustar esa FFT dentro de mi formulario de C#, este segundo formulario también lo tengo implementado, me faltaría poder integrar esos dos formularios en uno solo, como indiqué antes lo que quiero es poner el formulario de Python dentro de un panel del formulario de C# y poder extraer esa información de la FFT, ya que en la actualidad, mi segundo formulario es capaz de interpretar una señal de audio y extraer la información de interés.

La pretensión, por tanto, sería poder sintonizar en la FFT una señal en el aire para que mi segundo formulario la interpretase, en la actualidad lo hago presentarlos en ventanas separadas, pero como te he contado lo que quiero es que me aparezcan ambos en una misma ventana.

Gracias por tu colaboración.

Meta

#5
Buenas:  ::)

Muy curioso el FFT.

Lo más parecido a lo que indicas, si tienes el archivo.py, puedes cargarlo en el proyecto de C#. Algo explica en este vídeo.

[youtube=640,360]https://www.youtube.com/watch?v=MJXOe60sciA[/youtube]

La otra manera de hacerlo, es leer bien el código Python y adaptarlo a C# directamente. Como se hace mucho en C++ al C# o al revés.

¿Cómo ejecuto un script de Python desde C #?
https://www.it-swarm-es.com/es/c%23/como-ejecuto-un-script-de-python-desde-c/1067937383/

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Mohicano

#6
Cita de: aketxe63 en 26 Diciembre 2021, 12:09 PM
La idea es integrar un formulario de Python dentro de otro formulario de C#, es decir, he creado un formulario de Python con extensión *.py y otro formulario de C# con extensión *.cs, quiero insertar el formulario de Python dentro de un contenedor tipo panel alojado en el formulario de C# y que se puedan entender entre ellos, que la información captura en el formulario de Python la pueda tratar el formulario de C#.

Hasta donde yo se, diría que no existe ninguna herramienta, ni integrada ni de terceros, que permita establecer ese tipo de integración en Visual Studio para alojar algo reconocible como "form de Python" en un control o form de .NET Framework. Creo que eso es lo que estás preguntando, ¿verdad?, algo así como lo haríamos para interoperar entre controles de WinForms y WPF mediante la clase / control ElementHost ( https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.integration.elementhost ) como en los siguientes ejemplos:

- Hosting a WPF Composite Control in Windows Forms
- Hosting a Windows Forms Control in WPF

Entonces, e insisto, hasta donde yo se, lo máximo a integración en interoperabilidad entre Python y .NET, y para Visual Studio, sería IronPython ( https://ironpython.net/ ).

Aquí tienes un ejemplo de como iniciarse con IronPython:
[youtube=640,360]https://www.youtube.com/watch?v=B8YAdY-NvDY[/youtube]

Por cierto, he leido que, al usar IronPython para crear una aplicación de Windows Forms, la caja de herramientas de controles y el diseñador de forms en Windows Forms no aparecen disponibles (es decir, todo el formulario lo deberías diseñar mediante Python), pero en la tecnología WPF si que está disponible, así que quizás sería más conveniente crear una aplicación WPF con IronPython. Al menos eso dicen aquí: https://developercommunity.visualstudio.com/t/usar-windows-forms-con-python/905441

Aparte de eso, y por si no lo sabías, esta extensión para Visual Studio quizás te podría servir de ayuda para mejorar la experiencia en lo relacionado al análisis y desarrollo de código de Python en Visual Studio:

- Python Tools for Visual Studio (PTVS)

PD: las características de esa extensión ya vienen integradas como parte del conjunto de paquetes 'Python development' y 'Data science and analytical applications' en el instalador de Visual Studio.

Espero haberte ayudado.

aketxe63

Gracias a los dos (Meta y Mohicano).

Investigaré lo que ambos me habéis comentado.

En relación a IronPython quizás esté yo equivocado ya que pensaba que era para integrar un script de Python en C# y no veía cómo aplicarla a mi proyecto.

Meta

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/