代码之家  ›  专栏  ›  技术社区  ›  Daren Thomas

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

  •  10
  • Daren Thomas  · 技术社区  · 15 年前

    我已经在我的宠物开源项目中尝试了明显的途径 RevitPythonShell (建筑建模软件的插件Autodesk Revit Architecture 2010): code.interact() 在Ironpython引擎设置为使用.NET流 STDIN STDOUT .然后我将这些重定向到 TextBox 控制。这有点管用,但实际上只是一个丑陋的黑客。

    主要的问题是让所有的shell工具正常工作:用于历史、编辑、复制和粘贴、eof、语法突出显示、工具提示等的上箭头和下箭头。 要想把这件事做好需要很多工作 ,这并不是我要解决的真正问题(我尝试在revit中托管一个交互式shell,而不是生成完美的shell GUI)。

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

    是否有人实施过 IConsole 接口,可以显示一个我需要做什么的示例?这似乎是正确的路线(而不是使用 code 模块),但对于我的生活,我想不出来。Ironpython源代码没有任何注释。

    更新: 在尝试了一些东西之后,我最终决定要买一个高级的 IronLab 代码。它包括一个语法突出显示的示例shell。代码很好,易于集成。检查revitpythonshell代码中有关如何嵌入它的提示。

    2 回复  |  直到 8 年前
        1
  •  7
  •   Samuel    8 年前

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

    [2016年10月25日编辑]修复断开的URL

        2
  •  3
  •   djlawler    15 年前

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

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

    这是乔索克斯写的,是为Ironpython2写的,不是2.6。不过,我可以在大约5分钟内用2.6更新它以使其正常工作。如果您感兴趣,我可以给您发送一个diff文件或将更新的项目放在某个地方(它是在麻省理工学院的许可证下发布的)。

    享受!

    戴维