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/)
网友评论