Python 如何在文本字段中查询对象,以便对其进行处理?

Python 如何在文本字段中查询对象,以便对其进行处理?,python,maya,Python,Maya,我想知道如何查询输入到文本字段组中的选择,以便对其进行处理。我已经创建了一个窗口,只翻译我在文本字段中加载的对象。错误在于未定义cont import maya.cmds as cmds import maya.mel as ml def set_selected_name (text_field): cont = cmds.ls (selection = True) text_field = cmds.textFieldButtonGrp (text_field, edit

我想知道如何查询输入到文本字段组中的选择,以便对其进行处理。我已经创建了一个窗口,只翻译我在文本字段中加载的对象。错误在于未定义cont

import maya.cmds as cmds
import maya.mel as ml

def set_selected_name (text_field):
    cont = cmds.ls (selection = True)
    text_field = cmds.textFieldButtonGrp (text_field, edit = True,
                               text = ''.join (cont),
                               buttonLabel = '<<<<',
                               backgroundColor = [0.5098039215686274,
                                                  0.5098039215686274,
                                                  0.5098039215686274])
    return text_field

def translate_x(cont):
    cmds.setAttr( cont[0] + '.translateX', 10) 
       
def translate_y():
    cmds.setAttr( cont[0] + '.translateY', 10) 
       
def translate_z(*Args):        
    cmds.setAttr( cont[0] + '.translateZ', 10)




if cmds.window ('window1', q = 1, ex = 1):
    cmds.deleteUI ('window1')

cmds.window ('window1',
             title = 'Translate Attr',
             sizeable = 0,
             resizeToFitChildren = True,
             menuBar = 1)

cmds.rowLayout (numberOfColumns = 3)


cmds.separator (style = 'double',
                height = 6)

cmds.rowLayout (parent = 'window1',
                numberOfColumns = 4)

ddd = cmds.textFieldButtonGrp (editable = False,
                               text = 'Obj',
                               backgroundColor = [0.029495689326314183,
                                                  0.5488975356679637,
                                                  0.5488975356679637],
                               buttonLabel = '<<<<')

cmds.textFieldButtonGrp (ddd, edit = True,
                         buttonCommand = 'set_selected_name (ddd)')


cmds.separator (style = 'double',
                height = 6)

cmds.rowLayout (parent = 'window1',
                numberOfColumns = 6)

cmds.separator (style = 'double',
                height = 6)

cmds.button (command = 'translate_y()',
             backgroundColor = [1.0,
                                0.7300068665598535,
                                0.7300068665598535],
             label = 'Translate Y')

cmds.separator (style = 'double',
                height = 6)

cmds.button (command = 'translate_x(cont)',
             backgroundColor = [1.0,
                                0.9733272297245746,
                                0.7333333333333333],
             label = 'Translate X')

cmds.separator (style = 'double',
                height = 6)

cmds.button (command = 'translate_z()',
             backgroundColor = [0.7333333333333333,
                                1.0,
                                0.7600061036087586],
             label = 'Translate Z')

cmds.columnLayout (parent = 'window1')

cmds.separator (style = 'double',
                height = 3)

cmds.showWindow ('window1')

# ~ BABLAAM ~
将maya.cmds作为cmds导入
将maya.mel导入为ml
def set_selected_名称(文本字段):
cont=cmds.ls(selection=True)
text\u field=cmds.textFieldButtonGrp(text\u field,edit=True,
text=''.join(续),

buttonLabel='您的代码中有几个问题

  • 在translate命令中,您始终使用cont[0]。cont仅用于函数
    set\u selected\u name()
    ,它是一个局部变量,意味着函数完成后会立即将其删除
  • 您可以在按钮命令中使用字符串作为命令,但这仅适用于静态值。您应该使用lambdas来使用带参数的函数

  • cont
    问题可以通过使用全局变量来解决,但不应该这样,因为全局变量是万恶之源。更优雅的方法是将UI封装在一个python类中,并使用实例变量来获得选择。

    我已经调整了代码,按照您的建议添加了类,但仍然有e同样的问题。由于在按钮命令中没有使用引号,我在尝试运行脚本时会出现此错误,而不是在按下按钮时出现此错误

    错误:名称错误:文件第28行:未定义名称“translate_x”

    你能不能写一个可行的版本,或者在互联网上放一个链接,显示一个使用类的方法和使用按钮调用方法?我在互联网搜索中没有发现这样的东西,我只是在猜测这些东西应该去哪里

    import maya.cmds as cmds
    import maya.mel as ml
    
    class move_obj(object):
        def __int__(self, *args):
            self.cont = cont
            self.trans = trans
        def set_selected_name(self, *args):
            cont = cmds.ls (selection = True)
            return cont
        
        def translate_x(self, *args):
            trans = cmds.setAttr( cont[0] + '.translateX', 10) 
            print trans
              
            
    if cmds.window ('window1', q = 1, ex = 1):
        cmds.deleteUI ('window1')
    
    cmds.window ('window1',
                 title = 'Translate Attr',
                 sizeable = 0,
                 resizeToFitChildren = True,
                 menuBar = 1)
    
    cmds.rowLayout (numberOfColumns = 3)
    
    cmds.button (command = translate_x,
                 backgroundColor = [1.0,
                                    0.7300068665598535,
                                    0.7300068665598535],
                 label = 'Translate X')
    
    cmds.showWindow ('window1')
    

    您可以检查haggi键或我的配置文件,并查找ui+partial+functools。对于将参数传递到命令中,许多人都有相同的问题