Python 如何在文本字段中查询对象,以便对其进行处理?
我想知道如何查询输入到文本字段组中的选择,以便对其进行处理。我已经创建了一个窗口,只翻译我在文本字段中加载的对象。错误在于未定义contPython 如何在文本字段中查询对象,以便对其进行处理?,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
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。对于将参数传递到命令中,许多人都有相同的问题