每次在textScrollList中更改选择时,都会更新optionMenu项

时间:2015-11-18 04:56:58

标签: python maya

我有一个同时包含textScrollList和optionMenu的窗口。我想在文本列表中更改选项时刷新选项菜单项。

不确定从这个开始。

我使用常规的Maya Python。

2 个答案:

答案 0 :(得分:1)

您必须使用一个函数来填充文本卷并将其附加到on selectCommand标志。

您可能必须使用部分传递textcroll名称作为函数中的arg

希望它有所帮助。

答案 1 :(得分:1)

基本技巧只是确保更新函数的定义方式让它知道optionMenu和textScrollList的名称,以便编辑它们。简单的方法是在声明两个项并将其存储在变量中之后定义回调 - 只要这一切都在一个范围内,python将自动通过闭包插入所需的值 - 它比手动操作更优雅

这是一个非常小的例子

w = cmds.window()
c = cmds.columnLayout()
sl = cmds.textScrollList( append = ['a', 'b', 'c'])
op = cmds.optionMenu(label = 'test')
cmds.menuItem('created by default')


# the callback is defined after the ui so it knows the values of 'sl' and 'op'

def edit_options():
    # gets a list of selected items from the textScroll
    selected = cmds.textScrollList(sl,q=True, si=True)

    # loop through existing menus in the optionMenu and destroy them
    for item in cmds.optionMenu(op, q=True, ill=True) or []:
        cmds.deleteUI(item)

    # add a new entry for every item in the selection
    for item in selected:
        cmds.menuItem(label = item, parent = op)

    # and something not dependent on the selection too
    cmds.menuItem(label = 'something else', parent = op)

# hook the function up - it will remember the control names for you
cmds.textScrollList(sl, e=True, sc = edit_options)

cmds.showWindow(w)

更多背景资料:http://techartsurvival.blogspot.com/2014/04/maya-callbacks-cheat-sheet.html