代码之家  ›  专栏  ›  技术社区  ›  Doug Null

尝试获取VB。NET调用IronPython以增加VB变量

  •  1
  • Doug Null  · 技术社区  · 7 年前

    返回的值与传递给IronPython的值相同。

    我想要我的VB。NET windows窗体应用程序将变量123传递给IronPython,让IronPython向该变量添加10,然后让VB将其取回。 但是,它仍然返回123。

    Imports System
    Imports System.IO
    
    Imports Microsoft.Scripting
    Imports Microsoft.Scripting.Hosting
    Imports IronPython.Hosting
    
    
    Public Class Form1
         Private Sub Button_GO_Click(sender As Object, e As EventArgs) Handles Button_GO.Click
             ' HELLO WORLD...
             ' bring up an IronPython runtime 
            dim engine = Python.CreateEngine()
            dim  scope = engine.CreateScope()  
    
            ' create a source tree from code '
            dim source =  engine.CreateScriptSourceFromString("print 'hello from python'")
            ' run the script in the IronPython runtime'
            source.Execute(scope)
    
            ' MODIFY VARIABLE: BUG:  returns 1 instead of 11'
            engine = Python.CreateEngine()
            scope = engine.CreateScope()  
    
            ' create a Python variable "i" with the value 1'            
            scope.SetVariable( "i", 1 )
    
            ' this script will simply add 1 to it '
            source = engine.CreateScriptSourceFromString( "i += 10" )
    
            ' pull the value back out of IronPython and display it:'
            dim response = scope.GetVariable("i")
            debug.print(     response ) 
        End Sub
    End Class
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Doug Null    7 年前

    Imports System
    Imports System.IO
    
    Imports Microsoft.Scripting
    Imports Microsoft.Scripting.Hosting
    Imports IronPython.Hosting
    
    
    Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' VB SENDS A VARIABLE TO IRONPYTHON, WHICH INCS AND RETURNS IT......             http://www.chrisumbel.com/article/scripting_ironpython_dlr
           '/* bring up an IronPython runtime */  
            dim engine = Python.CreateEngine()
            dim  scope = engine.CreateScope()  
    
    
    
    
            ' create a Python variable "i" with the value 1         
            scope.SetVariable( "i", 123 )
    
    
    
            ' this script will simply add 1 to it 
            dim source = engine.CreateScriptSourceFromString( "i += 10" )
    
            '/* run the script in the IronPython runtime */  
            source.Execute(scope)
    
    
           '     /* pull the value back out of IronPython and display it */
                Console.WriteLine(scope.GetVariable("i").ToString())
    
    End Sub
    

    结束类