Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为上一个脚本创建UI窗口_Python_User Interface_Input_Window_Maya - Fatal编程技术网

Python 为上一个脚本创建UI窗口

Python 为上一个脚本创建UI窗口,python,user-interface,input,window,maya,Python,User Interface,Input,Window,Maya,伙计们!所以,多亏了你们,我才知道我在之前的脚本中为场景中的选定对象制作了错乱的动画,我做错了什么。我现在开始这个小练习的第二部分:为它创建UI 这涉及到创建一个带有按钮的窗口,以及用户输入动画的交错程度。因此,我现在不需要考虑交错应该增加多少(在我之前的脚本中是两个),而是让用户自己决定 到目前为止,我已经创建了正确的窗口、按钮和输入的脚本,尽管我在正确执行UI时遇到了一些问题,这意味着当我单击按钮时,不会弹出错误;事实上,任何事情都不会改变这个场景。我觉得这是因为我没有将增量变量放在正确的位

伙计们!所以,多亏了你们,我才知道我在之前的脚本中为场景中的选定对象制作了错乱的动画,我做错了什么。我现在开始这个小练习的第二部分:为它创建UI

这涉及到创建一个带有按钮的窗口,以及用户输入动画的交错程度。因此,我现在不需要考虑交错应该增加多少(在我之前的脚本中是两个),而是让用户自己决定

到目前为止,我已经创建了正确的窗口、按钮和输入的脚本,尽管我在正确执行UI时遇到了一些问题,这意味着当我单击按钮时,不会弹出错误;事实上,任何事情都不会改变这个场景。我觉得这是因为我没有将增量变量放在正确的位置,或者没有以正确的方式使用它,但我不确定在哪里/如何确切地解决它。任何帮助都将不胜感激

我的代码(建议编辑)如下:

import maya.cmds as cmds

spheres = cmds.ls(selection=True)

stagWin = cmds.window(title="Stagger Tool", wh=(300,100))
cmds.columnLayout()
button = cmds.button(label="My Life For Aiur!")
count = cmds.floatFieldGrp(fieldgroup, query=True, value=True)
fieldgroup = cmds.floatFieldGrp(numberOfFields=1)
cmds.button(button, edit=True, command=lambda _:stagger(fieldgroup))
cmds.showWindow(stagWin)

def stagger(fieldgroup):
    for i in spheres:
        cmds.selectKey(i)
        cmds.keyframe(edit=True, relative=True, timeChange=count)
    print "BLAH"

将这些评论转化为答案,因为我想我终于找到了答案:

首先,更好的做法是将参差对象传递给按钮命令,而不是字符串。这就是:

cmds.button(label="My Life For Aiur!", command=stagger)
其次,计数没有得到更新,因此它保持在第三行的
0
。更新:

count = cmds.floatFieldGrp(fieldgroup, query=True, value=True)
但是等等,
fieldgroup
来自哪里?我们需要将其传递到函数中。因此,返回按钮代码并完全取出命令,同时将对象保存到变量:

button = cmds.button(label="My Life For Aiur!")
现在,在创建字段组时存储该对象:

fieldgroup = cmds.floatFieldGrp(numberOfFields=1)
现在您有了fieldgroup,您可以在按钮的函数中传递它,如下所示:

cmds.button(button, edit=True, command=lambda _:stagger(fieldgroup))
我必须将函数包装在lambda中,因为我们传递的是fieldgroup,但是如果我只把
stagger(fieldgroup)
放进去,它就会调用它,并将结果传递到按钮的命令中

还使用fieldgroup参数更新参差定义:

def stagger(fieldgroup):
最后一个注意事项实际上不会影响这一点,但很高兴知道:

stagger
内移动关键帧时,使用的计数变量与上面声明为
0
的计数变量不同。外部是
全局
,内部是
局部
范围。一般来说,最好首先避免使用global,幸运的是,这意味着只需取出
count=0


把这些放在一起:

import maya.cmds as cmds

spheres = cmds.ls(selection=True)

stagWin = cmds.window(title="Stagger Tool", wh=(300,100))
cmds.columnLayout()
button = cmds.button(label="My Life For Aiur!")
fieldgroup = cmds.floatFieldGrp(numberOfFields=1)
cmds.button(button, edit=True, command=lambda _:stagger(fieldgroup))
cmds.showWindow(stagWin)

def stagger(fieldgroup):
    count = 0
    increment = cmds.floatFieldGrp(fieldgroup, query=True, value=True)[0]
    print count
    for i in spheres:
        cmds.selectKey(i)
        cmds.keyframe(edit=True, relative=True, timeChange=count)
        count += increment
    print "BLAH"

如果向其中添加
print
语句,是否会调用stagger?另外,您没有正确查询floadFieldGrp,也没有保存该值。在添加“print stagger()”时,我会得到一个“None”值。不知道你是不是这个意思。我还需要添加一个查询值吗?我不确定这是不是必要的,即使是像这样简单的事情X我的意思是在参差def中打印“我还活着!”。要进行查询,您需要类似于
count=cmds.floatFieldGroup(query=True,value=True)
的内容。您尝试了它,按照惯例弹出了一个窗口,尝试通过单击按钮使其运行,然后在floatFieldGrp中弹出一个错误,显示“未指定对象名称”。至于打印声明,没有打印。非常感谢您的帮助!不幸的是,现在我又回到了问题上,什么都没有发生。我将使用您的建议更新上面的代码,以显示我现在拥有的内容。是因为一个浮子放错了地方吗?比如,count float变量应该在函数内部吗?您在错误的位置编辑了按钮。我的意思是,在您存储了
字段组
之后,在下一行编辑
按钮
,给它一个命令,您现在可以根据
字段组
构建它。我再次编辑了上面的代码。现在遇到另一个错误:“找不到对象‘window1 | columnLayout14 | floatFieldGrp3’。”我猜窗口‘Object’已经声明并调用以显示。不确定现在出了什么问题。使用工作代码编辑。把我的和你的比较一下,也许它会点击哦,它成功地错开了所有球体的动画,这是我想去的地方的一半!现在,下一步要做的是使交错增加。比如,第一个球体将移动,然后下一个球体将与输入的数字交错,下一个球体将与刚刚交错的球体交错,依此类推。很抱歉,我是一个超级新手,当涉及到这类问题时,我知道我的问题可能看起来很简单,但是在最后把“count”变量括起来有什么意义呢?