命令 (MEL/Python)
|
MGPickerUserPanel
|
跳转到: 概要. MEL例子. Python例子.
概要
MGPickerUserPanel (string, [allowedAreas=[UnsignedInt]],[allIds=[boolean]], [dockArea=UnsignedInt], [dockFeatures=boolean], [exist=boolean], [floating=boolean],[installWidget=string], [name=string], [pickerMode=[int]], [remove=[boolean]], [title=string], [visible=boolean])
MGPickerService不可撤消, 可以查询且可以编辑。
这个命令用来创建及管理用户面板,用户可以安装自己的组件到这个面板上。
长名 (短名)
|
参数类型
|
属性
|
-allowedAreas(-aas)
|
UnsignedInt
|
  
|
|
|
-allIds(-ai)
|
|

|
|
|
-dockArea(-da)
|
UnsignedInt
|
  
|
|
|
-dockFeatures(-df)
|
UnsignedInt
|
  
|
|
|
-exist(-ex)
|
|

|
|
|
-floating(-fl)
|
boolean
|
  
|
|
面板是否浮动还是内置于MG-Picker工作室界面。
|
|
-installWidget(-iw)
|
string
|
 
|
|
安装指定ID的用户界面到该面板。查看下面代码例子来获取更多信息。
|
|
-name(-n)
|
|

|
|
创建面板时使用的初始名字,最终面板的ID将会是这个名字加前缀及可能的数字后缀。如果没有提供名字则默认为"unamed"。无论如何最终的ID都不会重复。
|
|
-pickerMode(-pm)
|
int
|
  
|
|
是否在不同的MG-Picker界面模式下显示该面板,0=设计师模式,1=动画师模式, 2=两者.
比如该数值为1,则该面板只在动画师模式显示,切换到设计师则自动隐藏,切回动画师模式又自动显示。
|
|
-remove(-rm)
|
|

|
|
|
-title(-t)
|
string
|
  
|
|
|
-visible(-vis)
|
boolean
|
  
|
|
|
|
|
|
|
|
|
标签可以在创建模式中使用
|
标签可以在编辑模式中使用
|
标签可以在查询模式中使用
|
|
MEL例子
// Install a MEL command based widget into MG-Picker and make it an animator mode only widget:
string $dockWgtId = `MGPickerUserPanel -name "test1" -title "Test User Panel" -pickerMode 1`;
string $userWidget = `columnLayout`;
colorSliderGrp -label "Blue" -rgb 0 0 1;
colorSliderGrp -label "Green" -hsv 120 1 1;
MGPickerUserPanel -e -installWidget $userWidget $dockWgtId;
// To remove, use: MGPickerUserPanel -e -remove $dockWgtId;
Python例子
# ---------------------------------------------------------------------
# Install a python command based widget into MG-Picker and make it an animator mode only widget:
from maya import cmds
dockWgtId = cmds.MGPickerUserPanel(name="pyCmdUi", title="Python Command UI", pickerMode=1)
userWidget = cmds.columnLayout()
cmds.colorSliderGrp(label="Blue", rgb=(0, 0, 1))
cmds.colorSliderGrp(label="Green", hsv=(120, 1, 1))
cmds.MGPickerUserPanel(dockWgtId, e=True, installWidget=userWidget)
# To remove, use: cmds.MGPickerUserPanel(dockWgtId, e=True, remove=True)
# ---------------------------------------------------------------------
# Install a native PySide2/PyQt5 QWidget into MG-Picker and make it an animator mode only widget.
# For PyQt5 it works in a similar way but you use sip instead of shiboken2.
from maya import cmds
from maya import OpenMayaUI as omui
from PySide2 import QtWidgets
from shiboken2 import wrapInstance
from mgpicker import mgp
class UserPanelExample(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.dockWgtId = cmds.MGPickerUserPanel(name="nativeQt")
cmds.MGPickerUserPanel(self.dockWgtId, e=True, title="Native Qt Panel")
cmds.MGPickerUserPanel(self.dockWgtId, e=True, dockArea=1)
cmds.MGPickerUserPanel(self.dockWgtId, e=True, pickerMode=2)
dockWgtPtr = omui.MQtUtil.findControl(self.dockWgtId)
self.dockWgt = wrapInstance(int(dockWgtPtr), QtWidgets.QDockWidget)
lay = QtWidgets.QVBoxLayout(self)
self.currentDocBtn = QtWidgets.QPushButton(self)
lay.addWidget(self.currentDocBtn)
self.uiModeBtn = QtWidgets.QPushButton(self)
lay.addWidget(self.uiModeBtn)
self.uiLangBtn = QtWidgets.QPushButton(self)
lay.addWidget(self.uiLangBtn)
# Qt Native Way to install the widget.
self.dockWgt.setWidget(self)
# Another way to install it, is to set object name and use installWidget flag:
# objName = "MySpecialName"
# self.setObjectName(objName)
# cmds.MGPickerUserPanel(self.dockWgtId, e=True, installWidget=objName)
# Refresh UI:
self.updateOnDocChanged()
self.updateUIModeChanged()
self.updateOnUILangChanged()
# Install callbacks so the UI refresh on these MG-Picker events:
mgp.CallbackManager.registerCallback(mgp.Event.CurrentDocChanged, "test", self.updateOnDocChanged)
mgp.CallbackManager.registerCallback(mgp.Event.UiModeChanged, "test", self.updateUIModeChanged)
mgp.CallbackManager.registerCallback(mgp.Event.UiLanguageChanged, "test", self.updateOnUILangChanged)
def updateOnDocChanged(self):
view = mgp.MGPicker(q=True, activePickerView=True)
if not view:
self.currentDocBtn.setText("N/A")
else:
ns = mgp.MGPickerView(view, q=True, namespace=True) or "N/A"
self.currentDocBtn.setText("NS: {}".format(ns))
def updateUIModeChanged(self):
mode = mgp.MGPicker(q=True, pickerMode=True)
self.uiModeBtn.setText("Animator Mode" if mode else "Designer Mode")
def updateOnUILangChanged(self):
lang = mgp.MGPicker(q=True, config=("language", ""))
self.uiLangBtn.setText("Language: {}".format(lang))
wgt = UserPanelExample()
|