2017-03-25 15 views
0

Vrayを使用するときに面倒な作業を簡略化するためのスクリプトを作成していますが、ユーザーがint値を入力して特定のアクションをトリガするintFieldsを入力できるようになっています。ボタン。私はコードを必要な部分だけに単純化しました。どのような値に変更しても、スクリプトエディタの出力では常に0になります。intFieldに変更が表示されない

import maya.cmds as cmds 

idManagerUI = cmds.window(title='Vray ID Manager', s = False, wh = (300,500)) 

cmds.columnLayout(adj = True) 

cmds.text (l = 'type in MultimatteID to select matching shaders \n or specify ObjectID to select matching objects \n __________________________________________ \n') 

cmds.text (l = 'MultimatteID: \n') 
cmds.intField("MultimatteID", editable = True) 
MultimatteIdButton = cmds.button(l = 'Go!', w = 30, h = 50, c = 'multimatteChecker()') 
cmds.text (l = '\n') 

cmds.showWindow(idManagerUI) 

MultimatteIdInput = cmds.intField("MultimatteID", q = True, v = True) 


def multimatteChecker(): 
    print MultimatteIdInput 

答えて

0

3つのこと:

まず、書かれたとして、あなたがintField MultimatteIDが実際にあなたがそれを持ってすべきだと思う名前を取得していることを確認することはできません。 Mayaウィジェットの名前はMayaオブジェクトの名前のようにユニークです。名前はMultimatteIDとなりますが、実際には同様の名前のコントロールを使用して削除されていないウィンドウが表示されるため、実際はMultimatteID2という名前のウィジェットに戻ります。

第2に、ペーストしたコードは、ウィンドウの作成直後にコントロールの値を照会します。常に作成時に指定した値を出力する必要があります。

最後に、ボタンにコマンド割り当ての文字列バージョンを使用しないでください。リスナーのコードから作業スクリプトに移動すると、信頼性が低くなります。

idManagerUI = cmds.window(title='Vray ID Manager', s = False, wh = (300,500)) 
    cmds.columnLayout(adj = True) 
    cmds.text (l = 'type in MultimatteID to select matching shaders \n or specify ObjectID to select matching objects \n __________________________________________ \n') 
    cmds.text (l = 'MultimatteID: \n') 
    # store the intField name 
    intfield = cmds.intField("MultimatteID", editable = True) 
    cmds.text (l = '\n') 

    # define the function before assigning it. 
    # at this point in the code it knows what 'intfield' is.... 
    def multimatteChecker(_): 
     print cmds.intField(intfield, q = True, v = True) 

    #assign using the function object directly 
    MultimatteIdButton = cmds.button(l = 'Go!', w = 30, h = 50, c = multimatteChecker) 
+0

スーパー:

これは、あなたが欲しいものを行う必要があります。できます。ありがとうございました :) – leabum

関連する問題