1

考えられるすべてのリソースを調べた後、Pythonのモジュール内で関数から他の変数にグローバル変数を渡すための緊急の支援が必要であるという結論に達しました。

実際、私はAutodesk Maya2010で小さなUIを書いています。ここに、問題についての簡単な説明があります。

次のコードでは、2つのモジュールレベルのグローバル変数があり、関数内でそれらに値を割り当てています。これらの変数を直接渡すと(つまり、関数呼び出しを変換して文字列として割り当てることなく)、コードは正常に機能しますが、ボタン関数のコマンドフラグでは文字列または関数名しか許可されないため、これに固執します関数を呼び出す方法。

私が得る結果は次のとおりです:

temp_var=なし

a_Window=なし

私にはわからない。

文字列値を関数呼び出しとして使用すると、正確に何が起こっているのかを誰かが指摘できますか?

**The sample code**:


import maya.cmds;
temp_var=None;
a_Window=None;
def im_PrimaryFunc():
    imSecondary_func();

def imSecondary_func():
    global a_Window;
    global temp_var;
    a_Window=maya.cmds.window(title="Something");
    a_layout=maya.cmds.columnLayout(adj=1,rs=10);
    temp_var=maya.cmds.createNode("polySphere");
    func_call="a_calledFunc(a_Window,temp_var)";
    maya.cmds.button(label="call_aFunc",align="center",command=func_call);
    maya.cmds.showWindow(a_Window);

def a_calledFunc(arg00,arg01):
    print(arg00);
    print(arg01);
4

1 に答える 1

1

このコードを試してください

import maya.cmds
from functools import partial
temp_var=None
a_Window=None
def im_PrimaryFunc():
    imSecondary_func()

def imSecondary_func():
    global a_Window
    global temp_var
    a_Window=maya.cmds.window(title="Something")
    a_layout=maya.cmds.columnLayout(adj=1,rs=10)
    temp_var=maya.cmds.createNode("polySphere")
    maya.cmds.button(label="call_aFunc",align="center",command = partial(a_calledFunc,temp_var, a_Window))
    maya.cmds.showWindow(a_Window)

def a_calledFunc(arg00,arg01, part):
    print(arg00)
    print(arg01)

im_PrimaryFunc()

Pythonコードを書いているので、追加する必要はありません。あなたのコードで:)

于 2012-07-13T17:35:46.293 に答える