如何在C#中使用IronPython执行Python语句,例如,一个表达式:string expr="a=1
\n def b(): \n\t print a \n b()\n",执行后打印“1”。
参考
using System;
using System.Windows.Forms;
using IronPython.Hosting;
using System.Drawing;
namespace CSharpAndIpy
{
public partial class FrmMain : Form {
public FrmMain()
{
InitializeComponent();
}
private void btnRunOfString_Click(object sender, EventArgs e)
{
try {
//创建一个IpyRunTime,需要2-3秒时间。建议进入全局时加载,此为演示 var engine = IronPython.Hosting.Python.CreateEngine();
var code = engine.CreateScriptSourceFromString(txtScript.Text);
var actual = code.Execute<object>();//执行code脚本,获取输出值actual txtPrint.Text = actual.ToString();
}
catch (Exception ex)
{
txtPrint.Text = ex.ToString();
}
}
//执行事先准备的my.py脚本 private void btnRunOfIpyFile_Click(object sender, EventArgs e)
{
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
scope.SetVariable("Ipy_this", this);//将this Set 到Ipy脚本的Ipy_this值中 var code = engine.CreateScriptSourceFromFile("my.py");//执行my.py code.Execute(scope);
}
/// <summary> /// 测试方法,要为public才能在Ipy脚本中访问 /// </summary> public void testMethod(int R,int G,int B)
{
try {
txtScript.BackColor = Color.FromArgb(R, G, B);
}
catch { }
}
}
}