如何使用Python在Maya中的运行时编辑特定的架子按钮?

问题描述 投票:0回答:1

我正在尝试使用Maya在Python中创建一个脚本,该脚本将允许我动态更改有关该按钮的特定按钮的图像。我正陷入一些严重的问题,下面将详细介绍:import maya.cmds as cmds import maya.mel as mel cmds.refresh(cv=1, f=1) gShelfTopLevel = mel.eval("global string $gShelfTopLevel; $temp = $gShelfTopLevel;") currentShelf = cmds.tabLayout(gShelfTopLevel,q=1,st=1) buttons = cmds.shelfLayout(currentShelf,q=1,ca=1) buttonName = "Button 1" for button in buttons: if cmds.shelfButton(button, q=True, l=True) == buttonName: cmds.shelfButton(button, h=35, w=35, e=1, i="icons/axis_Object.png", p=currentShelf ) #If this was working I'd have an if statement here for a second image. break Toggler() class Toggler(): if ctx == 'moveSuperContext': tool = 'Move' mode = cmds.manipMoveContext(tool, q=1, m=1) if mode != 2: cmds.manipMoveContext(tool, e=1, m=2) else: cmds.manipMoveContext(tool, e=1, m=0) if ctx == 'RotateSuperContext': tool = 'Rotate' mode = cmds.manipRotateContext(tool, q=1, m=1) if mode != 0: cmds.manipRotateContext(tool, e=1, m=0) else: cmds.manipRotateContext(tool, e=1, m=1) if ctx == 'scaleSuperContext': tool = 'Scale' mode = cmds.manipScaleContext(tool, q=1, m=1) if mode != 0: cmds.manipScaleContext(tool, e=1, m=0) else: cmds.manipScaleContext(tool, e=1, m=2)

首先是脚本。按钮的功能定义在底部,尽我所知,这一切都很好。我已经交给了已经存在的代码。

我的问题如下:

    图像会更改栏中的所有按钮。这无济于事,我不确定为什么会这样。
  1. 所有按钮的名称都更改为buttonName。因此,在这种情况下,所有按钮都被重命名为“按钮1”,这对我来说也非常令人沮丧。
  2. 原始按钮上的脚本被克隆到所有其他按钮。
  3. 附录2是我尝试重命名buttonName变量,因为buttonName是分配给这些按钮脚本的固有变量。

过去,我能够使用以下MEL代码仅编辑按钮的图像:

shelfButton -edit -image "icons/axis_World.png" $button;

与我在Python中所做的相比,我无法弄清楚此代码的独特之处,但很显然我正在发生某些事情。

欢迎任何援助,因为在这一点上我完全茫然。似乎单击架子上的任何按钮都会导致它遍历该架子上的所有按钮。

谢谢!

我正在尝试使用Maya在Python中创建一个脚本,该脚本将允许我动态更改特定按钮的图像,而该按钮没有其他改变。我陷入了一些严重的问题,我......>

python button maya
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.