【问题标题】:how to make selected object renamed in maya using python?如何使用python在maya中重命名选定的对象?
【发布时间】:2021-01-26 00:04:34
【问题描述】:

我在这里有一个 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()

【问题讨论】:

标签: python rename maya


【解决方案1】:

两个原因:

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

confirmDialog() 不需要 cmds.showWindow(),不需要它也可以工作。

【讨论】:

    【解决方案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 的部分模块。 Stack里面有很多例子

    【讨论】:

      猜你喜欢
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多