Python Forum
how to pass arguments between pythons scripts? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: how to pass arguments between pythons scripts? (/thread-30201.html)



how to pass arguments between pythons scripts? - electricDesire - Oct-11-2020

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...


RE: how to pass arguments between pythons scripts? - deanhystad - Oct-12-2020

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



RE: how to pass arguments between pythons scripts? - electricDesire - Oct-19-2020

sorry for the answer very late and thanks for the answer deanhystad, it's ok now!