Dar*_*mas 10 python shell ironpython embedding read-eval-print-loop
我在我的宠物开源项目RevitPythonShell(建筑建模软件Autodesk Revit Architecture 2010的插件)中尝试了明显的路径:code.interact()使用IronPython引擎设置为STDIN和使用.NET流STDOUT.然后我将这些重定向到TextBox控件.它有点工作,但真的只是一个丑陋的黑客.
主要问题是让所有shell工作正常工作:历史记录的上箭头和下箭头,编辑,复制和粘贴,EOF,语法高亮,工具提示等.要做到这一点需要做很多工作,而且它并不是我想要解决的问题(我正在尝试在Revit中托管交互式shell,而不是制作完美的shell GUI).
如果这不是一个.NET项目,我可能会考虑重用PyCrust/PyWrap,但我不确定是否可以从WinForms项目中完成..NET有什么类似的东西吗?
有没有人实现过IConsole界面,可以展示我需要做什么的例子?看起来这将是正确的路线(而不是使用code模块),但对于我的生活,我无法弄明白.IronPython源代码没有任何评论.
更新:在尝试了一些东西后,我最终选择了精湛的IronLab代码.它包括一个带语法高亮的示例shell和all.代码很好,易于集成.检查有关如何嵌入它的提示的RevitPythonShell代码.
我正在寻找类似的东西,我发现IronLab项目包含一个不错的IronPython控制台.源代码可以在这里找到https://github.com/rwg0/ironlab/tree/master/IronPythonConsole.
[编辑于2016年10月25日]修复了破碎的网址