在.NET下面开发的,把IronPython和C#结合一起用的人多吗

2024-11-20 19:27:36
推荐回答(1个)
回答(1):

有,但是不是很大众
形式:用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()