我在我的宠物开源项目RevitPythonShell(建筑建模软件Autodesk Revit Architecture 2010的插件)中尝试了明显的路径:code.interact()
并将IronPython引擎设置为使用.NET STDIN
和STDOUT
的流。然后我将这些重定向到TextBox
控件。它有点工作,但真的只是一个丑陋的黑客。
主要问题是让所有shell工作正常工作:历史,编辑,复制和放大的向上箭头和向下箭头粘贴,EOF,语法突出显示,工具提示等。要做到这一点需要做很多工作,这并不是我想要解决的问题(我想要得到一个在Revit中托管的交互式shell,而不是制作完美的外壳GUI)。
如果这不是.NET项目,我可能会考虑重用PyCrust/PyWrap,但我不确定是否可以从WinForms项目中完成。 .NET有什么类似的东西吗?
有没有人实现过IConsole
界面,可以展示一下我需要做什么的例子?看起来这将是正确的路线(而不是使用code
模块),但对于我的生活,我无法弄明白。 IronPython源代码没有任何评论。
更新:在尝试了一些内容后,我最终选择了精湛的IronLab代码。它包括一个带语法高亮的示例shell和all。代码很好,易于集成。检查有关如何嵌入它的提示的RevitPythonShell代码。
答案 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许可下发布的。)
享受!
大卫