我已經嘗試了我的寵物開源項目RevitPythonShell(建築建模軟件Autodesk Revit Architecture 2010的插件)中的明顯路徑:code.interact()
,IronPython引擎設置爲使用.NET流STDIN
和STDOUT
。這些我然後重定向到一個TextBox
控件。它有點不錯,但真的只是一個醜陋的黑客。如何在應用程序中嵌入圖形交互式IronPython shell?
主要問題是讓所有shell的東西工作:上箭頭和下箭頭的歷史,編輯,複製&粘貼,EOF,語法突出顯示,工具提示等需要很多工作才能獲得這個權利,它不是真正的問題,我試圖解決(我試圖獲得一個交互式外殼託管在Revit中,而不是完美的外殼GUI)。
如果這不是一個.NET項目,我可能會考慮重用PyCrust/PyWrap,但我不確定這是否可以從WinForms項目中完成。有什麼類似的.NET?
有沒有人實現過IConsole
接口,並且可以顯示我需要做什麼的例子?看起來這將是正確的路線(而不是使用code
模塊),但對於我的生活,我無法弄清楚。 IronPython源代碼沒有任何評論。
更新:在嘗試了一些東西后,我最終決定了極好的IronLab代碼。它包括一個帶有語法高亮顯示的示例shell以及全部。代碼很好,易於集成。檢查RevitPythonShell代碼,瞭解如何嵌入它。
不是一個很好的罐裝解決方案...所以我會留下它作爲評論。您可以在SharpDevelop IDE項目中查看Matt Ward的PythonConsole.cs源代碼。查看SharpDevelop \ src \ AddIns \ BackendBindings \ Python \ PythonBinding \ Project \ Src。將這個類分解出來可能是一個大問題,以便它(和ICSharpCode.TextEditor)可以在其他項目中使用。但也許它會幫助你一點點。從他們的構建服務器下載SharpDevelop源代碼:http://build.sharpdevelop.net/BuildArtefacts或使用svn:svn://svnmirror.sharpdevelop.net/sharpdevelop/branches/3.0/SharpDevelop – djlawler 2010-03-04 11:46:45
不要害羞;)這本身就是一個非常好的答案 - 只要我這樣做,我會盡快查看它! – 2010-03-04 13:25:36