Python 在Maya optionMenuGrp中创建函数
是否可以将函数传递到Maya optionMenuGrp(类似组合框) 我制作了一个简单的UI,其中有一个组合框(maya cmds而不是PyQt),其中有两个选项 我尝试使用以下代码,但menuItem语句中出现了错误:Python 在Maya optionMenuGrp中创建函数,python,maya,Python,Maya,是否可以将函数传递到Maya optionMenuGrp(类似组合框) 我制作了一个简单的UI,其中有一个组合框(maya cmds而不是PyQt),其中有两个选项 我尝试使用以下代码,但menuItem语句中出现了错误: # Error: non-keyword arg after keyword arg # File "<maya console>", line 9 # SyntaxError: non-keyword arg after keyword arg # 您必须
# Error: non-keyword arg after keyword arg
# File "<maya console>", line 9
# SyntaxError: non-keyword arg after keyword arg #
您必须挂接到optionMenu本身中的changeCommand,而不是菜单项的命令。但是,由于optionMenu回调将传递所选项目,因此您可以使用它从菜单项本身获取回调并手动触发它:
def optionMenuCallback(*args):
fn = cmds.menuItem (args[0], q=True, c=True)
if fn:
fn()
def menu1Callback():
cmds.polySphere(n='created_by_item1')
print 'menu 1 fired'
def menu2Callback():
cmds.polyCube(n='created_by_item_2')
print 'menu 2 fired'
w = cmds.window(w=150, h=100)
cmds.columnLayout(adjustableColumn=True)
form = cmds.formLayout(numberOfDivisions=100)
exportSelection = cmds.optionMenuGrp(label='example', cc=optionMenuCallback)
test1 = cmds.menuItem('item1', c = menu1Callback)
test1 = cmds.menuItem('item2', c= menu2Callback)
cmds.showWindow(w)
但是我有一个问题,
fn()
来自哪里?它是否与选项菜单回调中的fn
相同?请原谅,如果我最终想要一个按钮,根据所选内容接收值,是否可以让它返回到\uuuuu init\uuuu
?我编辑了我的帖子fn
来自cmds.menuItem(args[0],q=True,c=True)
行,该行使用-q标志和-c标志调用menuItem
,询问“此菜单项的回调是什么”。菜单项本身作为参数由change命令传入。这种安排使您可以为每个菜单项使用不同的命令,并使用optionMenu上的changeCommand来触发所选的命令
def optionMenuCallback(*args):
fn = cmds.menuItem (args[0], q=True, c=True)
if fn:
fn()
def menu1Callback():
cmds.polySphere(n='created_by_item1')
print 'menu 1 fired'
def menu2Callback():
cmds.polyCube(n='created_by_item_2')
print 'menu 2 fired'
w = cmds.window(w=150, h=100)
cmds.columnLayout(adjustableColumn=True)
form = cmds.formLayout(numberOfDivisions=100)
exportSelection = cmds.optionMenuGrp(label='example', cc=optionMenuCallback)
test1 = cmds.menuItem('item1', c = menu1Callback)
test1 = cmds.menuItem('item2', c= menu2Callback)
cmds.showWindow(w)