我有一個既有textScrollList又有optionMenu的窗口。我想在文本列表中選擇更改時刷新選項菜單項。更新optionMenu項每次在textScrollList中更改選擇內容
不確定從這一開始。
我使用普通的瑪雅Python。
我有一個既有textScrollList又有optionMenu的窗口。我想在文本列表中選擇更改時刷新選項菜單項。更新optionMenu項每次在textScrollList中更改選擇內容
不確定從這一開始。
我使用普通的瑪雅Python。
基本技巧就是確保您的更新函數的定義方式可以讓它知道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
您必須使用一個函數來填充文本滾動並將其附加到selectCommand標誌上。
您可能需要使用局部通道的文字廣告欄名稱ARG在功能
希望它能幫助。
您能否提供一些代碼嗎? – DrHaze