Python Forum

Full Version: how to pass arguments between pythons scripts?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello, everybody,
I'm new in python and i'm trying to pass arguments between different scripts but they only update one way:
i'm calling the first script in maya with a shelf in maya like this:

try:
        myPM.close()
except:pass
import sys
sys.path.append("C:/Users/manue/Desktop/test")
import UiMayaTest as SBIRP
reload(SBIRP)
myPM = SBIRP.createUI()
this called script 'UiMayaTest.py' is a simple window with an intField entry and a button:

import sys
import maya.cmds as cmds
from functools import partial

def buttonPressed(episode, *args):
    passValue(episode, *args)
    print '============== buttonPressed ================'
    print 'EpisodeName ', EpisodeName

    Var = ''
    import UiMayaTestFunction
    Var = UiMayaTestFunction.FindVarFunc(EpisodeName,Var)
    print 'Var : ',Var

def createUI(): 
    myWindow = "SomeWindow"
    if cmds.window(myWindow,ex=True):
        cmds.deleteUI(myWindow)
    cmds.window(myWindow)
    cmds.columnLayout( adjustableColumn=True )
    cmds.text( label='Episode:  ', align='left' )
    episode = cmds.intField( "Episode", minValue = 100, maxValue = 1000, value =100)
    cmds.button(l="Open Last LIT scene", w=150, h=30, command=partial(buttonPressed,episode))
    cmds.setParent("..")
    cmds.showWindow()

def passValue(episode, *args):
    global EpisodeName
    EpisodeName = `cmds.intField( episode, query = True, value = True)
`

and the script called by it is called 'UiMayaTestFunction.py' and just return a variable called Var:

def FindVarFunc(EpisodeName, Var):
    print '============== FindVarFunc ================'
    print 'EpisodeName:' , EpisodeName 
    Var = 'Hello world'
    print 'Var: ',Var
    return Var
the variable 'EpisodeName' from UiMayaTest to UiMayaTestFunction is well updated each time i press the button,
but if i change the variable Var = 'Hello world' in UiMayaTestFunction by for example Var = 'Gnnn', it doesn't update it,
i've got always the same print or 'Var'... 'Hello world'
Thanks by advance for any help...
I certainly hope it always prints 'Var: Hello world' since setting Var = 'Hello world' is the last thing you do before printing Var.

This has nothing to do with functions being in different modules.  It is just a logic error that you have to fix.  This code exhibits the same behavior and the function and function call are in the same module.
def set_string_func(string):
    print('Received', string)
    string = 'yellow'  ## Why doing this if passed string?
    print('Returning', string)  ## string is always 'yellow' after assignment
    return string

string = set_string_func('mellow')
The output is:
Quote:Received mellow
Returning yellow
sorry for the answer very late and thanks for the answer deanhystad, it's ok now!