使用 python 在 Maya ui 中启用或禁用字段
enable or disable a field in maya ui with python
我正在尝试 enable/disable 玛雅 python 脚本的 ui 中的浮动字段,但我不知道它是如何完成的。这是一个例子:
import maya.cmds as cmds
def createUI(windowTitle):
windowID = 'myWindoWID'
if cmds.window(windowID, exists = True):
cmds.deleteUI(windowID)
cmds.window( windowID, title = windowTitle, sizeable = False, resizeToFitChildren = True)
cmds.rowColumnLayout(numberOfColumns = 3, columnWidth = [(1,120), (2,120), (3,120)])
cmds.floatField(enable = False)
cmds.button(label = 'enable the float field', command = enableFloatField)
cmds.button(label = 'disable the float field', command = disableFloatField)
cmds.showWindow()
def enableFloatField(*args):
#enable the float field
print 'float field enabled'
def disableFloatField(*args):
#disable the float field
print 'float field disabled'
createUI('my window')
首先将您的浮动字段存储在变量中。
my_float_field = cmds.floatField(enable = False)
我们使用 functools.partial 将此变量传递给按钮的命令方法。
cmds.button(label = 'enable the float field', command = partial(enableFloatField, my_float_field))
cmds.button(label = 'disable the float field', command = partial(disableFloatField, my_float_field))
在您的方法中,我们随后会在编辑模式下调用 cmds.floatField()
并编辑您作为参数发送的特定浮动字段。
def enableFloatField(float_field, *args):
#enable the float field
cmds.floatField(float_field, edit=True, enable=True)
def disableFloatField(float_field, *args):
#disable the float field
cmds.floatField(float_field, edit=True, enable=False)
记得导入 functools。
from functools import partial
所以你的整个代码将是:
from functools import partial
import maya.cmds as cmds
def createUI(windowTitle):
windowID = 'myWindoWID'
if cmds.window(windowID, exists = True):
cmds.deleteUI(windowID)
cmds.window( windowID, title = windowTitle, sizeable = False, resizeToFitChildren = True)
cmds.rowColumnLayout(numberOfColumns = 3, columnWidth = [(1,120), (2,120), (3,120)])
my_float_field = cmds.floatField(enable = False)
cmds.button(label = 'enable the float field', command = partial(enableFloatField, my_float_field))
cmds.button(label = 'disable the float field', command = partial(disableFloatField, my_float_field))
cmds.showWindow()
def enableFloatField(float_field, *args):
#enable the float field
cmds.floatField(float_field, edit=True, enable=True)
def disableFloatField(float_field, *args):
#disable the float field
cmds.floatField(float_field, edit=True, enable=False)
createUI('my window')
cmds.floatField(float_field, edit=True, enable=False)
中需要注意的重要事项是 edit=True
标志。此标志在 edit
模式下调用 UI 方法,这意味着您传递给此 UI 方法的任何参数都将用于 编辑 现有 UI 元素,这将是该方法的第一个参数;在本例中 float_field
,它包含您的浮动字段的名称,它可能类似于 'myWindoWID|rowColumnLayout6|floatField11'
.
另一个这样的模式标志是 query=True
,它可以让您查询 UI 元素的参数。如果这两个标志都不存在,Maya 将假定该方法是在 create
模式下调用的。
希望这对您有所帮助。
我正在尝试 enable/disable 玛雅 python 脚本的 ui 中的浮动字段,但我不知道它是如何完成的。这是一个例子:
import maya.cmds as cmds
def createUI(windowTitle):
windowID = 'myWindoWID'
if cmds.window(windowID, exists = True):
cmds.deleteUI(windowID)
cmds.window( windowID, title = windowTitle, sizeable = False, resizeToFitChildren = True)
cmds.rowColumnLayout(numberOfColumns = 3, columnWidth = [(1,120), (2,120), (3,120)])
cmds.floatField(enable = False)
cmds.button(label = 'enable the float field', command = enableFloatField)
cmds.button(label = 'disable the float field', command = disableFloatField)
cmds.showWindow()
def enableFloatField(*args):
#enable the float field
print 'float field enabled'
def disableFloatField(*args):
#disable the float field
print 'float field disabled'
createUI('my window')
首先将您的浮动字段存储在变量中。
my_float_field = cmds.floatField(enable = False)
我们使用 functools.partial 将此变量传递给按钮的命令方法。
cmds.button(label = 'enable the float field', command = partial(enableFloatField, my_float_field))
cmds.button(label = 'disable the float field', command = partial(disableFloatField, my_float_field))
在您的方法中,我们随后会在编辑模式下调用 cmds.floatField()
并编辑您作为参数发送的特定浮动字段。
def enableFloatField(float_field, *args):
#enable the float field
cmds.floatField(float_field, edit=True, enable=True)
def disableFloatField(float_field, *args):
#disable the float field
cmds.floatField(float_field, edit=True, enable=False)
记得导入 functools。
from functools import partial
所以你的整个代码将是:
from functools import partial
import maya.cmds as cmds
def createUI(windowTitle):
windowID = 'myWindoWID'
if cmds.window(windowID, exists = True):
cmds.deleteUI(windowID)
cmds.window( windowID, title = windowTitle, sizeable = False, resizeToFitChildren = True)
cmds.rowColumnLayout(numberOfColumns = 3, columnWidth = [(1,120), (2,120), (3,120)])
my_float_field = cmds.floatField(enable = False)
cmds.button(label = 'enable the float field', command = partial(enableFloatField, my_float_field))
cmds.button(label = 'disable the float field', command = partial(disableFloatField, my_float_field))
cmds.showWindow()
def enableFloatField(float_field, *args):
#enable the float field
cmds.floatField(float_field, edit=True, enable=True)
def disableFloatField(float_field, *args):
#disable the float field
cmds.floatField(float_field, edit=True, enable=False)
createUI('my window')
cmds.floatField(float_field, edit=True, enable=False)
中需要注意的重要事项是 edit=True
标志。此标志在 edit
模式下调用 UI 方法,这意味着您传递给此 UI 方法的任何参数都将用于 编辑 现有 UI 元素,这将是该方法的第一个参数;在本例中 float_field
,它包含您的浮动字段的名称,它可能类似于 'myWindoWID|rowColumnLayout6|floatField11'
.
另一个这样的模式标志是 query=True
,它可以让您查询 UI 元素的参数。如果这两个标志都不存在,Maya 将假定该方法是在 create
模式下调用的。
希望这对您有所帮助。