如何在应用程序中嵌入图形交互式IronPython shell?

时间:2010-03-04 09:33:48

标签: python shell ironpython embedding read-eval-print-loop

我在我的宠物开源项目RevitPythonShell(建筑建模软件Autodesk Revit Architecture 2010的插件)中尝试了明显的路径:code.interact()并将IronPython引擎设置为使用.NET STDINSTDOUT的流。然后我将这些重定向到TextBox控件。它有点工作,但真的只是一个丑陋的黑客。

主要问题是让所有shell工作正常工作:历史,编辑,复制和放大的向上箭头和向下箭头粘贴,EOF,语法突出显示,工具提示等。要做到这一点需要做很多工作,这并不是我想要解决的问题(我想要得到一个在Revit中托管的交互式shell,而不是制作完美的外壳GUI)。

如果这不是.NET项目,我可能会考虑重用PyCrust/PyWrap,但我不确定是否可以从WinForms项目中完成。 .NET有什么类似的东西吗?

有没有人实现过IConsole界面,可以展示一下我需要做什么的例子?看起来这将是正确的路线(而不是使用code模块),但对于我的生活,我无法弄明白。 IronPython源代码没有任何评论。

更新:在尝试了一些内容后,我最终选择了精湛的IronLab代码。它包括一个带语法高亮的示例shell和all。代码很好,易于集成。检查有关如何嵌入它的提示的RevitPythonShell代码。

2 个答案:

答案 0 :(得分:7)

我正在寻找类似的东西,我发现IronLab项目包含一个不错的IronPython控制台。源代码可以在https://github.com/rwg0/ironlab/tree/master/IronPythonConsole找到。

[2016年10月25日编辑]修复了破碎的网址

答案 1 :(得分:3)

好的,那么我有两个可能的答案。一个在上面的评论....另一个更简单(没有intellisense,没有语法突出显示):

http://www.codeproject.com/KB/edit/irontextbox2.aspx

由JoeSox提供,它适用于IronPython 2,而不是2.6。但是我能够在大约五分钟内将其更新为2.6。如果您有兴趣,我可以想办法向您发送差异文件或在某处更新项目(它是在MIT许可下发布的。)

享受!

大卫