1

私は IronPython の初心者で、助けが必要です。Visual Basic 2010 Express で作成した Windows フォームがあります。これには、2 つのテキスト ボックス (' txtNumber ' および ' txtResult ') とボタン (' btnSquare ') が含まれています。私がしたいのは、フォームのボタンをクリックすると、以下の Python スクリプト (' Square.py ') を呼び出せるようにすることです。

class SquarePython:

    def __init__(self, number):

        self.sq = number*number

このスクリプトは、入力された数値を ' txtNumber ' に二乗し、結果を ' txtResult ' に出力する必要があります。これはほとんど単純すぎることはわかっていますが、基本を知る必要があるだけです。これが私の VB コードのこれまでの内容です。

Imports Microsoft.Scripting.Hosting
Imports IronPython.Hosting
Imports IronPython.Runtime.Types

Public Class Square

    Private Sub btnSquare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSquare.Click

        Dim runtime As ScriptRuntime = Python.CreateRuntime

        Dim scope As ScriptScope = runtime.ExecuteFile("Square.py")

    End Sub

End Class

前もって感謝します。

4

1 に答える 1

1

よろしければ、C#で回答します。しかしとにかくそれはバージョンに非常に似ていVBます。コードへのアクセスSquarePythonは非常に簡単です

ScriptEngine py = Python.CreateEngine();

ScriptScope scope = py.ExecuteFile("Square.py");

dynamic square = scope.GetVariable("SquarePython");

int result = (int)square(5);

Console.WriteLine(result.sq); //prints 25 as you might expected

しかし、簡単にするために、Pythonコードを次のように少し変更します

class SquarePython:
    def Square(self, number):
        return number * number

そのため、計算するたびにオブジェクトを作成する必要はありません。変数を取得し、メソッドをsquareに呼び出すコードを以下に示します。

ScriptEngine py = Python.CreateEngine();

ScriptScope scope = py.ExecuteFile("Square.py");
//get variable and then create and object. Could be stored somewhere between computations
dynamic squareInstance = scope.GetVariable("SquarePython")(); 

int result = (int) squareInstance.Square(5);

Console.WriteLine(result);

注:キーワードをVB.NETに変換する必要がある場合は、C#の「動的」に相当するVB.Net を参照してください。dynamic

于 2013-01-06T13:05:44.340 に答える