多个文本字段拒绝加载所选对象

时间:2018-12-22 06:23:37

标签: python textfield maya

尽管进行了两次,三次和四次检查,但我编写的代码仍拒绝将选定的项目加载到文本字段中,也就是说,假设您可以使maya克服它对cmds.windows函数的新仇恨

我得到的错误有三点,如果您尝试将代码加载到新窗口中,您将得到

  

错误:未定义名称“窗口””,如果您克服了这个障碍,则会遇到两个问题:第一个是粘贴下面的代码。菜单将加载得很好,但是如果您按下“ “加载A节点”或“加载B节点”,将显示错误消息“#错误:找不到对象'window1 | columnLayout9 | sld_surfaceTextHJ”。

我从未在代码中放入“ sld_surfaceTextHJ”,所以我不知道为什么玛雅人一直在要求它。但是,如果您对其进行幽默处理,然后尝试将名称'sld_surfaceTextA'或'sld_surfaceTextB'更改为任何其他名称,则会出现第三个错误:#错误:未定义名称'window1 | columnLayout9 | sld_surfaceTextHJ'。

该脚本曾经可以很好地进行加载选择,但是似乎我按照这种格式制作的每个脚本都无法工作。

在这里,如果您想破解一下

import maya.cmds as cmds
if cmds.window(window, exists =True):
    cmds.deleteUI(window)

window = cmds.window(title='DS selection connector demo')
column = cmds.columnLayout(adj=True)

sld_textFldA = cmds.textField('sld_surfaceText1', width =240)
load_button = cmds.button( label='Load A Node', c = set_textfield)

sld_textFldB = cmds.textField('sld_surfaceText2', width =240)
load_button = cmds.button( label='Load B Node', c = set_textfield)

node_button = cmds.button( label='Connect Node', c = make_node)


def set_textfieldA(_):
    sel = cmds.ls(selection=True)
    cmds.textField(sld_textFldA, edit=True, text=sel[0])

def set_textfieldB(_):
    sel = cmds.ls(selection=True)
    cmds.textField(sld_textFldB, edit=True, text=sel[0])


def connect_node(_):
   text_value = cmds.textField(sld_textFldA, q = True, text=True)
   text_value = cmds.textField(sld_textFldB, q = True, text=True)
   if text_value:
       print "created:", cmds.connectAttr('transform', n=text_value +'_firstGuy')
       print "created:", cmds.connectAttr('transform', n=text_value +'_secondGuy')

   else:
       cmds.warning("select an object and add it to the window first!")

cmds.showWindow( window )

预期结果非常简单:在创建的任何节点上单击“加载A节点”以加载第一个节点,然后在创建的第二个节点上单击“加载B节点”:然后单击“连接节点”您的第一个节点的translate属性应与连接编辑器一样连接至第二个节点。

1 个答案:

答案 0 :(得分:0)

没关系,对于任何感兴趣的人:这是固定代码,我仍然还没有弄清楚connect属性部分:但是对于寻找简单textField选择加载器演示的人,您可以去:

import maya.cmds as cmds
if cmds.window(window, exists =True):
    cmds.deleteUI(window)

window = cmds.window(title='DS selection connector demo')
column = cmds.columnLayout(adj=True)

sld_textFldA = cmds.textField('sld_surfaceText1', width =240)
load_button = cmds.button( label='Load A Node', c = set_textfield1)

sld_textFldB = cmds.textField('sld_surfaceText2', width =240)
load_button = cmds.button( label='Load B Node', c = set_textfield2)


def set_textfield1(_):
    sel = cmds.ls(selection=True)
    cmds.textField(sld_textFldA, edit=True, text=sel[0])

def set_textfield2(_):
    sel = cmds.ls(selection=True)
    cmds.textField(sld_textFldB, edit=True, text=sel[0])


cmds.showWindow( window )