Ответ 1
Я искал аналогичную вещь, и я обнаружил, что проект IronLab содержит приятную консоль IronPython. Исходный код можно найти здесь https://github.com/rwg0/ironlab/tree/master/IronPythonConsole.
[edit on 25/10/2016] исправленный сломанный URL
Я пробовал очевидный путь в моем домашнем проекте с открытым исходным кодом RevitPythonShell (плагин для программного обеспечения для моделирования зданий Autodesk Revit Architecture 2010 ): code.interact()
с движком IronPython, настроенным для использования потоков .NET для STDIN
и STDOUT
. Затем я перенаправляюсь к элементу управления TextBox
. Это вроде как работает, но на самом деле это всего лишь уродливый хак.
Основная проблема заключается в том, чтобы заставить все вещи оболочки работать: стрелка вверх и стрелка вниз для истории, редактирования, копирования и вставки, EOF, подсветка синтаксиса, подсказки инструментов и т.д. Требуется много работы для получите это право, и это не проблема, которую я пытаюсь решить (я пытаюсь получить интерактивную оболочку, размещенную в Revit, не создавая идеальный графический интерфейс оболочки).
Если бы это был не проект .NET, я бы, вероятно, подумал о повторном использовании PyCrust/PyWrap, но я не уверен, это можно сделать из проекта WinForms. Есть ли что-то подобное для .NET?
Кто-нибудь когда-либо реализовал интерфейс IConsole
и может показать пример того, что мне нужно сделать? Кажется, это будет правильный маршрут (в отличие от использования модуля code
), но для жизни меня я не могу понять. Исходный код IronPython не имеет комментариев.
ОБНОВЛЕНИЕ: После того, как я попробовал некоторые вещи, я в конце концов остановился на превосходном IronLab. Он включает пример оболочки с подсветкой синтаксиса и всеми. Код был приятным и легким для интеграции. Проверьте код RevitPythonShell на подсказки о том, как вставлять его.
Я искал аналогичную вещь, и я обнаружил, что проект IronLab содержит приятную консоль IronPython. Исходный код можно найти здесь https://github.com/rwg0/ironlab/tree/master/IronPythonConsole.
[edit on 25/10/2016] исправленный сломанный URL
Хорошо, тогда у меня есть два возможных ответа. Один в комментарии выше.... и еще более простой (без intellisense, без подсветки синтаксиса):
http://www.codeproject.com/KB/edit/irontextbox2.aspx
Это JoeSox, и это для IronPython 2, а не 2.6. Однако я смог обновить его, чтобы нормально работать с 2.6 примерно за пять минут. Если вам интересно, я могу найти способ отправить вам файл diff или пощекотать обновленный проект где-нибудь (он был опубликован под лицензией MIT).
Наслаждайтесь!
Дэвид