如何使用python在maya中重命名选定对象?

2024-10-01 02:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我这里有一个python函数,它应该在maya中重命名对象。但当窗口出现,我点击“重命名”按钮时,一切都没有改变。甚至连新窗口都没有。请帮忙

def renameObject():
    a = cmds.ls(sl=True)
    txt = cmds.textField('txtName', q=True, tx=True)
    
    cmds.rename('a', txt)
    cmds.confirmDialog(icn='information', message='Done!')
    cmds.showWindow()
    return

cmds.window(title='Rename Object')
cmds.columnLayout(adj=1)
cmds.text(label= 'Insert Name', w=300, h=30)
cmds.separator()
cmds.textField('txtName')
cmds.button(label='Rename', width=300, c=lambda*args:'renameObject()')

cmds.showWindow()

Tags: 对象函数txttruedef按钮label重命名
2条回答
def renameObject(*args):
    a = cmds.ls(sl=True)
    txt = cmds.textField(txt_field , q=True, tx=True)
    
    cmds.rename(a[0], txt)
    cmds.confirmDialog(icn='information', message='Done!')
    cmds.showWindow()

cmds.window(title='Rename Object')
cmds.columnLayout(adj=1)
cmds.text(label= 'Insert Name', w=300, h=30)
cmds.separator()
txt_field = cmds.textField('txtName')
cmds.button(label='Rename', width=300, c=renameObject)

cmds.showWindow()

我已经纠正了你的代码,当运行时它是很难工作的,但是你的代码中有很多错误,Haggi Krey已经指出了很多错误。若你们想深入UI设计,你们应该看看functools中的部分模块。堆栈中有很多示例

原因有二:

  1. lambda表达式有一个字符串“renameObject()”,它应该是不带撇号的函数名
  2. 即使调用了renameObject()函数,它也会失败,因为您将当前选择分配给一个名为a的变量。但是在rename函数中,再次使用字符串“a”。因此,maya搜索一个名为“a”的对象,并尝试将其重命名,除非您确实有一个名为“a”的对象

而且confirmDialog()不需要cmds.showWindow(),它可以不使用

相关问题 更多 >