C#与python结合编程

C#与python结合编程

形式:用C#写界面和事件触发,调用python脚本进行逻辑和数据处理。 好处:编写好界面和事件触发之后,可以动态改动py脚本,不需要重新编译程序。 缺点:使用的电脑需要装有python,同时程序需附带多个ironpython的dll。  

方法: 

1、安装ironpython

 2、新建C#项目。添加引用:IronPython.dll,Microsoft.Dynamic.dll,Microsoft.Scripting.dll 

3、在C#文件添加python的调用。 

//声明并定义调用python的类 

ScriptEngine engine;

 ScriptScope scope; 

object myInstance; 

engine = Python.CreateEngine(); 

scope = engine.CreateScope();

 var code = engine.CreateScriptSourceFromString("XXXXX");

//通过string文本调用py语句,也可以调用fromfiles函数来调用py脚本 

code.Execute(scope);

//执行上述py代码 

var myClass = scope.GetVariable>("Control"); 

//把py脚本中的类提到C#中,或者是调用py脚本中的类或者变量 

myInstance = myClass("hello world", textBox1.Text);

//实例化该类,并能调用构造函数进行初始化 

//把C#的变量传入到py中 

engine.Operations.SetMember(myInstance, "listBox1", listBox1); 

engine.Operations.SetMember(myInstance, "treeView1", treeView1); 

engine.Operations.SetMember(myInstance, "richTextBox1", richTextBox1);

 //调用py脚本中的类成员函数 

engine.Operations.GetMember>(myInstance, "GetTree")(textBox1.Text); 

4、在python文件添加C#类 

#引入ironpython库和C#库 

#添加python库 

import clr,sys 

clr.AddReference('IronPython') 

clr.AddReference('System.Windows.Forms') 

clr.AddReference('System.Drawing') 

sys.path.append("C:\Python27\DLLs") 

sys.path.append("C:\Python27\Lib") 

#把C#的控件类提出来,也可以直接import,但是调用这些空间的时候就要把调用写全,例如

System.Windows.Forms.TreeNode 

from System.Windows.Forms import TreeNode 

from System.Windows.Forms import ListBox 

from System.Windows.Forms

import TreeView from System.Windows.Forms

import TextBox from System.Windows.Forms 

import RichTextBox from System.Drawing import Color 

把C#空间类实例化 listBox1 = ListBox()

出处(http://www.wpf123.com/)

你可能感兴趣的:(C#与python结合编程)