私は、お気に入りのオープン ソース プロジェクトRevitPythonShell (建物モデリング ソフトウェア Autodesk Revit Architecture 2010 のプラグイン) で明白なパスを試しましcode.interact()
た。これらをコントロールにリダイレクトします。それはちょっとうまくいきますが、実際には醜いハックです。STDIN
STDOUT
TextBox
主な問題は、すべてのシェル機能を動作させることです: 履歴、編集、コピー & ペースト、EOF、構文の強調表示、ツール ヒントなどの上矢印と下矢印。これを正しく行うには多くの作業が必要です。私が解決しようとしている問題は実際にはありません(完全なシェルGUIを作成するのではなく、Revitでホストされるインタラクティブなシェルを取得しようとしています)。
これが .NET プロジェクトでない場合は、おそらくPyCrust/PyWrapの再利用を検討するでしょうが、それが WinForms プロジェクトから実行できるかどうかはわかりません。.NET に似たものはありますか?
誰かがIConsole
インターフェースを実装したことがあり、私が何をする必要があるかの例を示すことができますか? これは(code
モジュールを使用するのではなく)適切なルートのようですが、私の人生ではそれを理解できません。IronPython のソース コードには、コメントは一切ありません。
更新:いくつか試した後、最終的に優れたIronLabコードに落ち着きました。構文の強調表示とすべてを備えたシェルの例が含まれています。コードは素晴らしく、簡単に統合できました。RevitPythonShell コードの埋め込み方法に関するヒントを確認してください。