Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 在Maya optionMenuGrp中创建函数_Python_Maya - Fatal编程技术网

Python 在Maya optionMenuGrp中创建函数

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 # 您必须

是否可以将函数传递到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 #

您必须挂接到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)