Как запустить приложение с графическим интерфейсом и по-прежнему перенаправлять stdin / stdout с C #?

Я пытаюсь запустить приложение Python Tkinter с C #. Это приложение использует stdin и stdout помимо своего графического интерфейса. Как я могу запустить его из приложения dotnet Core, чтобы получить доступ к его stdin / stdout?

Если я использую, я могу перенаправить потоки, но графический интерфейс не появится. Если я использую UseShellExecute=true появляется графический интерфейс, но потоки не могут быть перенаправлены.

Я также пробовал начать процесс с cmd /c py ... вместо просто py .... Тем не менее, графический интерфейс не отображается в UseShellExecute=false режим.

Обновлять:

На данный момент кажется, что проблема как-то связана с Python . Приведенный ниже код работает, и окно появляется, но только в mainloop(). Это НЕ то же самое приложение, которое ведет себя, если я запускаю его прямо из cmd. В этом случае графический интерфейс пользователя появляется еще до ввода данных. Что может вызвать такую ​​разницу в поведении?

      var psi = new ProcessStartInfo
            {
                FileName = "py",
                Arguments = @"s:\dsgui\ex.py",
                RedirectStandardInput = true,
                RedirectStandardOutput = true,
                UseShellExecute = false
            };
            var process = Process.Start(psi);
            process.StandardInput.WriteLine("test");

ex.py:

      import tkinter
tkinter.Tk()
print(input())
tkinter.mainloop()

0 ответов

Другие вопросы по тегам