0
点赞
收藏
分享

微信扫一扫

[项目实例] 使用 IronPython 库来创建一个支持使用Python脚本操作的简易文本编辑器


步骤 :

  1. 打开 nuget 包管理器, 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 程序包.
  2. [项目实例] 使用 IronPython 库来创建一个支持使用Python脚本操作的简易文本编辑器_.net

  3. 在 nuget 包管理器中找到 IronPython, 安装到你的项目.
  4. [项目实例] 使用 IronPython 库来创建一个支持使用Python脚本操作的简易文本编辑器_.net_02

  5. using 所需的命名空间, Microsoft.Scripting, Microsoft.Scripting.Hosting, Microsoft.Win32, IronPython.Hosting.
  6. 创建 Python 引擎:

ScriptEngine engine = Python.CreateEngine();

  1. 创建定义域(Scope), 它用来存储变量:

ScriptScope scope = engine.CreateScope();

  1. 在 Scope 中设置与获取变量值:

scope.SetVariable("name", "value");   // 其中, name是变量名, "value"可以是任意类型, 表示变量值

获取变量也差不多, 是GetVariable.

  1. 设置引擎的标准输出流以捕获内容:

TriggerStream stream = new TriggerStream();  // TriggerStream是一个能够在写入时触发事件的, 继承了Stream的类.
engine.Runtime.IO.SetOutput(stream, Encoding.Default);  // 这样, 我们可以通过TriggerStream的写入事件来获取写入的内容

提示: 了解 TriggerStream, 请查看这篇文章: 支持事件的Stream, 关于为什么使用 Encoding.Default 而不使用 UTF-8, 是因为在Windows里面, 都是用的 ANSI. 而Default就是获取ANSI的编码(在中国是GBK)

  1. 执行 Python 代码:

ScriptSource thisSrc = engine.CreateScriptSourceFromString("print('hello world')", SourceCodeKind.File)
thisSrc.Execute(scope);   // 代码在这个定义域种执行

SourceCodeKind.File指这个字符串是来自文件的代码, 也就是说你可以在里面加换行加缩进以定义一个语句块之类的. 还有一个就是SourceCodeKind.Expression, 指一个表达式.

项目 :

项目已经在 GitHub 开源, 地址: SlimeNull/Null.TextEditor 想直接下载成品? 希望你能下载成功: Release/Null.TextEditor.exe


举报

相关推荐

0 条评论