【发布时间】:2020-01-24 17:22:05
【问题描述】:
当我从 Windows 窗体应用程序运行 python 脚本时,我希望启动一个 Ironpython 交互式窗口。我希望将 python IO 重定向到交互式窗口。因此,脚本可以在运行时接受用户输入。
我在 Windows 窗体 (C#) 中创建了一个托管 Ironpython 2.7.9 的应用程序。我制作了一个简单的 GUI,它允许我使用 OpenFileDialog() 选择一个 python 脚本并使用引擎运行它。到目前为止,我的脚本不需要用户输入,并且从头到尾都是完全自动化的。但是,现在我希望在这些脚本中包含手动步骤,这些步骤需要用户输入“y”或“n”来继续或中止脚本。随着 winforms 应用程序将所有输出打印到控制台,我无法在运行时与 python 脚本交互。理想情况下,当我运行我的脚本并能够从那里与 python 脚本交互时,我希望启动一个 ironpython 交互式窗口。从我能够在线收集的信息来看,似乎我必须在我的计算机程序文件中硬编码 ipy.exe 文件的路径,并以某种方式重定向 python 输入/输出,但这并不理想。我认为必须有一种更简单的方法来做到这一点,但无法弄清楚如何。最终,我只是想为在 C# 中运行的 python 脚本提供用户输入,所以如果有任何其他方法可以满足这一点,我会接受这些想法。任何建议将不胜感激,如果我需要提供更多信息,请告诉我!
我是如何创建引擎的:
public ScriptExecutor()
{
InitializeComponent();
myEngine = Python.CreateEngine();
}
private Microsoft.Scripting.Hosting.ScriptEngine myEngine;
我使用 ExecuteFile 函数运行一个脚本:
myEngine.ExecuteFile(@"path to file");
预期结果是在单击“运行脚本”按钮时启动 python 交互式窗口。用户可以从这个交互式窗口与脚本进行交互(提供输入/查看输出)
图形用户界面图片:(https://imgur.com/RzzMI4N)
【问题讨论】:
标签: c# python winforms ironpython