python - 如何在 Maya 中使用 Def Function 字符串

标签 python string maya function

我一直在从梅尔转过来,想知道是否有人可以给我指出正确的方向。 我不太确定如何运行带有特定参数的函数。

def testFUNCTION(field):
    if field == 'option1': print 'You have selected option 1'
    else: print 'You have selected option 2'

mc.window( w=150 )
mc.textFieldButtonGrp (l='option 1', bl='Set', ad3=2, bc=('testFUNCTION, option1'))
mc.textFieldButtonGrp (l='option 2', bl='Set', ad3=2, bc=('testFUNCTION, option2'))
mc.showWindow()

我不断得到:

line 1: name 'option1' is not defined

任何建议都会很棒! 谢谢

最佳答案

当您传递时,您正在尝试从字符串创建回调

mc.textFieldButtonGrp (l='option 1', bl='Set', ad3=2, bc=('testFUNCTION, option1')

当 Maya 计算字符串时,“option1”未加引号,因此 Python 认为它是变量名称。

一般来说,您不想使用字符串格式进行回调,正是因为这个原因:确定变量的定义位置会出现问题。

通常的解决方法是使用 functools 模块或 lambda 来创建回调,该回调包含创建时所需的所有信息。例如:

def testFUNCTION(field):
    if field == 'option1': print 'You have selected option 1'
    else: print 'You have selected option 2'

window = mc.window( w=150 )
mc.columnLayout()
mc.textFieldButtonGrp (l='option 1', bl='Set', ad3=2, bc=(lambda : testFunction('option1'))
mc.textFieldButtonGrp (l='option 2', bl='Set', ad3=2, bc=(lambda : testFunction('option2'))
mc.showWindow(window)

这里有关于如何轻松设置回调的更详细说明 here

PS:注意添加了columnLayout命令。如果没有它,您的控件将彼此叠放

关于python - 如何在 Maya 中使用 Def Function 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021598/

相关文章:

string - 在 SML 中使用 foldr 连接字符串

javascript - 显示纹理 - Maya 到 Three.js

python curses 文本框小部件

计算字母字符数的 Python 函数,跟踪 "e"出现的次数

c++ - 在字符串中使用空字符 (C++)

python - 玛雅人 + python : Move pivot to bottom of bounding box

玛雅中的 python : get all attributes

python - 当变量很多时如何进行智能数据分析

python - 在Python中从Dataframe中删除数字行

python - 将新的键值对添加到python中现有的键值对对象