Windows Forms C# mit Python verbinden?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
var process = new Process
{
  StartInfo =
  {
    FileName = "Pfad\zur\py",
    Arguments = "Daten"
  }
};
process.Start();
process.WaitForExit();

Das wars. ;-)

Einfach das Pythonskript mit den Nötigen Argumenten starten und warten, dass es fertig ist.

VG

daCypher  30.11.2023, 09:45

und im Python-Script muss man natürlich die Argumente auslesen. Also entweder den Pfad zu der json-Datei, für die eine Rechnung erzeugt werden soll oder (ich weiß nicht nicht 100%ig, ob das klappt) die json-Daten direkt als Argument.

Im Python-Script kannst du so auf die Argumente zugreifen:

import sys
filename = sys.argv[1]
2
daCypher  30.11.2023, 11:47
@Erzesel

Ich geb dir Recht, dass es besser wäre, wenn alles aus einem Guss wäre, aber in diesem Fall, wo es schon eine fertige GUI und ein fertiges Script für die Rechnung gibt (die nur aus einer json eine pdf macht, also problemlos per cmd aufrufbar ist), finde ich es unnötigen Aufwand, das umzubauen.

Mit TKinter ist es zwar einfach, Formulare zu bauen, aber die sehen meistens nicht grade schön aus (wobei die GUI sowieso in WinForms gebaut ist, was auch nicht viel besser ist) und um die PDFs in C# zu generieren müsste man erst ein ganzes Framework lernen, was ziemlich aufwändig und frustrierend sein kann.

Wenn, dann wäre es wohl das Beste, das ganze Projekt als Web-App neu zu bauen, aber das ist dann auch wieder ein Riesenaufwand. Ich lasse einfach dem Fragesteller die Wahl, was er jetzt genau umsetzt

2
Erzesel  30.11.2023, 10:56

🥵 ... Damit stülpst du lediglich Deine potenzielle GUI über ein Consolprogramm das ist Flickschusterei. wenn mans macht dann Richtig... und aus einem Guss

0
Dultus, UserMod Light   30.11.2023, 12:07
@Erzesel
Wenn mans macht dann Richtig...

Das fängt schon damit an, dass es Forms ist.

Ich stimme dir zu, dass man am besten alles in einem macht, aber es ist nicht immer zwingend nötig und auch gar nicht immer üblich.

0
 Leider gelingt es mir jedoch nicht, diese Funktionen miteinander zu koppeln.

...kann man einen Golf und einen Astra gleichzeitig fahren? ...ein schwieriges Unterfangen.

genauso verhält es sich mit 2 verschiedenen Programmphilosophien. Naturlich wäre es machbar in einer Dll die entsprechenden Schnittstellen auf die jeweils andergearteten Techniken bereitzustellen, und mit ctype auf diese zugreifen.

Im falle von C# und Python würde dies bedeuten, dass gleichzeitig der Pythoninterpreter , der C# JIT-Compiler und die nativen WindowsAPI ausgeführt werden müssen. Damit wird die Sache zum Resourcenfresser ohne Gleichen.

Du stellst Dir 3 Autos in die Garage , nur weil Dir die Farbe des einen gefällt, vom zweiten das Interieur und vom dritten der V8 ... ...und dann hüpfst Du von einem ins andere, nur fahren kannst Du keines. Nun kannst Du ja versuchen alle 3 Autos zu zerlegen und daraus ein neues zu bauen.... Viel Spass beim basteln!🤪🤮

genug der Analogien...:

wähle die Sprache welche Dir an besten zusagt und arbeite mit deren Möglichkeiten:

Datenbankanbindung in C#

...oder die Erstellung der Oberfläche für Python

Egel welche der Varianten Du nutzt, damit stellst Du Sicher, das Du ein Ergebnis erhältst , Welches aus einem Guss ist und desen Teile auch perfekt zusammenpassen..

Du warst doch sicher mal Kind dann sollte Dir folgendes bekannt sein:

Man bekommt die Teile irgendwie zusammengepappt, aber das Ergebnis wird nie perfekt...