没有合适的资源?快使用搜索试试~ 我知道了~
使用IronPython把Python脚本集成到.NET程序中的教程
15 下载量 53 浏览量
2020-09-22
07:40:57
上传
评论 1
收藏 83KB PDF 举报
温馨提示
试读
2页
主要介绍了使用IronPython把Python脚本集成到.NET程序中的教程,现在刚刚被微软开源的.NET重新成为业界热点、本文介绍了使Python和.NET交互的IronPython,需要的朋友可以参考下
资源推荐
资源详情
资源评论
使用使用IronPython把把Python脚本集成到脚本集成到.NET程序中的教程程序中的教程
主要介绍了使用IronPython把Python脚本集成到.NET程序中的教程,现在刚刚被微软开源的.NET重新成为业界热
点、本文介绍了使Python和.NET交互的IronPython,需要的朋友可以参考下
从两个优秀的世界各取所需,更高效的复用代码。想想就醉了,.NET和python融合了。“懒惰”的程序员们,还等什么?
Jesse Smith为您展示如何两个语言来服务同一个.NET程序。你能集两家所长:Python和.NET一起工作,提供可重用的代码
功能而不需要你为了一个环境重写代码库。
通过使用IronPython 运行时库,你可以让Python脚本运行在你的.NET程序中。本文向你展示如何使用一个.NET程序中的
python脚本获取并展示用户反馈。
如果你曾经有在一个.NET程序中运行Python脚本的需求,整合两者最好的办法是使用IronPython。我有过这样的需求。我曾
经效力的一个组织需要扩展一个已经存在于一个.NET地图程序中的工具集。我们的目的是利用另一个工具集中现有的Python
代码来扩展这个已有的工具集,前者还不是后者的一部分。在做了一番研究之后,我决定使用IronPython,事情进展很顺利。
本文基于上述项目的经验,我会还原当时的场景,对你所处的情境也同样适用。
对于这个我们所期望的解决方案,首先要面对的挑战是从将要运行在.NET程序中的那个Python脚本获取输出,然后使用一
个.NET程序的对话框把这个输出展示给用户。让我感到吃惊的是,这么做比预想的还要简单,你同样也能学到如何去做同样
的事情。整个过程相对比较简单,我们将在下面的章节中进行概述。
在在.NET程序中嵌入程序中嵌入Python脚本脚本
在这个例子中,我向你展示如何在一个Windows桌面程序中嵌入Python脚本。目的是在一个已有的程序中添加一个新的工具
按钮。点击按钮后,程序会弹出一个对话框,显示一个嵌入在对话框代码中的Python脚本的运行结果。
为了给这个例子铺垫更多的前因后果,我们这个应用程序是一个桌面地图软件,可以让用户创建他们自己的地图。这个新的工
具允许用户解析和标准化他们地图上的地址点。
标准化一个地址,就意味着要确保这个地址有一个街道名,前缀或后缀,房屋或建筑编号,以及连接该街道的上一条街道和下
一条街道。每一个地址段必须遵循US邮局邮编地址标准指导。
假设已有一个Python脚本已经可以做到这些;它就是例子中执行解析的脚本。Python脚本将会通过当前对话框在屏幕上输出
或闪现这个正在解析的地址,我们可以通过选择地址解析工具来触发对话框(我不想说的太细,仅仅解释到这里。)
代码并不重要,重要的是知道如何嵌入脚本和如何定向脚本的输出到对话框,作为程序的一部分显示在屏幕上。这一过程像下
面这样进行:
用户启动地图程序并打开一个自定义地图。
用户从屏幕上方的已有的工具集中选择一个新的地址标准化工具。
弹出一个带有可以启动地址标准化进程的启动按钮的地址标准化对话框
一个文本框显示当前正在被解析的地址。这些文本框很快消失,地址在用户眼前一闪而过,表示过程启动并且正在解
析。
出现一个表示整个过程结束的信息,使用了第4步中同样的文本框。
确定源代码和项目确定源代码和项目
首先要做的事情是确定脚本应该嵌入到应用程序源代码的什么位置。在我们的例子/情境下,这个位置应该是添加到包含工具
集项目中的新的对话框。这个对话框会被一个已经存在的用于处理工具栏点击事件的方法所触发
当我们确定了需要包含源代码的项目后,就需要引用IronPython 库。
如果你使用Visual Studio作为编辑器的话,最简单的方法是使用Nuget Package Manager来添加IronPython库到项目中。你可
以搜索”IronPython”,然后运行时库就可以在包管理工具中选择了。
嵌入脚本
接下来做的才是真正嵌入脚本。你首先要用脚本引擎(scripting engine)来设置一个Python脚本引擎实例。在添加脚本前,你同
样可以设置任何你的脚本所需的特殊的路径。
ScriptEngine pyEngine = Python.CreateEngine();
pyEngine.Runtime.IO.RedirectToConsole();
var paths = pyEngine.GetSearchPaths();
paths.Add(@"C:Python27Lib");
paths.Add(@"C:Python27Libsite-packages");
pyEngine.SetSearchPaths(paths);
第二行告诉.NET框架Python引擎的运行时库会将输出重定向到控制台。然而,这并不是重定向到我们为这个应用添加的新的
工具所需的对话框中。(下面的代码会做这个工作)
资源评论
weixin_38690079
- 粉丝: 2
- 资源: 950
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Win64OpenSSL-3-3-0.exe
- 课高分程设计-基于C++实现的民航飞行与地图简易管理系统-南京航空航天大学
- 航天器遥测数据故障检测系统python源码+文档说明+数据库(课程设计)
- 北京航空航天大学操作系统课设+ppt+实验报告
- 基于Vue+Echarts实现风力发电机中传感器的数据展示监控可视化系统+源代码+文档说明(高分课程设计)
- 基于单片机的风力发电机转速控制源码
- 基于C++实现的风力发电气动平衡监测系统+源代码+测量数据(高分课程设计)
- 毕业设计- 基于STM32F103C8T6 单片机,物联网技术的太阳能发电装置+源代码+文档说明+架构图+界面截图
- 基于 LSTM(长短期记忆)(即改进的循环神经网络)预测风力发电厂中风力涡轮机产生的功率+源代码+文档说明
- 基于stm32f103+空心杯电机+oled按键+运动算法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功