使用Python在Maya中删除菜单项

3

如何使用Python从主窗口中移除菜单项?我已经使用MEL实现了它,但我也需要用Python实现。

没有工作的部分是查找并删除菜单。 我似乎找不到Python中的等效方法。

Python(不起作用)

import maya.cmds as cmds

if(???)
{
    #cmds.deleteUI('JokerMartini', menu=True )
}

cmds.menu(label='JokerMartini', tearOff=True, p='MayaWindow')
cmds.menuItem(label='Action 1', c= 'something.run()')
cmds.menuItem(divider=True)
cmds.menuItem(label='Action 2', c= 'something.run()')

Mel (working)

if(`menu -exists JokerMartini`)
{
    deleteUI JokerMartini;
}
global string $gMainWindow;
setParent $gMainWindow;
menu -label "JokerMartini" -to true -aob true JokerMartini;    
menuItem -label "Action 1" -command "something";
menuItem -label "Rename..." -command "something";
1个回答

4
以下是创建主菜单项的一种方法:

以下是创建主菜单项的一种方法:

import maya.cmds as mc

menuJM = "JM"
labelMenu = "JokerMartini"

mc.menu(menuJM, l=labelMenu, to=1, p='MayaWindow')
mc.menuItem(l='Action 1', c='something.run()')
mc.menuItem(d=True)
mc.menuItem(l='Action 2', c='something.run()')

删除时,您应该使用以下方法:

if mc.menu(menuJM, l=labelMenu, p='MayaWindow') != 0:
    mc.deleteUI(mc.menu(menuJM, l=labelMenu, e=1, dai=1))
    mc.deleteUI(menuJM)     

mc.refresh()

enter image description here


为什么要调用两次mc.deleteUI?dai = 1和vis = 1是什么意思? - Jitesh
1
@Jitesh,dai代表删除所有项目,而vis现在已经被弃用。尝试其中一个调用,然后再尝试两个调用,你就会明白为什么了。 - Andy Jazz
1
在最新版本的Maya中,不再需要使用deleteAllItems。似乎之后也不需要刷新。 只需运行以下命令: maya.cmds.deleteUI(menu_name, menu=True) - Hannes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接