Как запустить приложение с графическим интерфейсом и по-прежнему перенаправлять 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()