MGPickerUserPanel命令
MGPickerUserPanel is NOT undoable, queryable, and editable.
这个命令用来创建及管理用户面板,用户可以安装自己的组件到这个面板上。
跳转到: [MEL例子] [Python例子]
概要
MGPickerUserPanel( allowedAreas=unsignedint, allIds=boolean, dockArea=unsignedint, dockFeatures=unsignedint, exist=boolean, floating=boolean, installWidget=string, name=string, pickerMode=unsignedint, remove=boolean, title=string, visible=boolean, )
MGPickerUserPanel命令 |
|---|
-allowedAreas(-aas) unsignedint
|
面板被允许停靠的所有位置,在创建或编辑模式下需要指定Qt标签 [Qt::DockWidgetAreas](https://doc.qt.io/archives/qt-5.6/qt.html的整数值。 |
-allIds(-ai)
|
列出所有已创建的面板ID。 |
-dockArea(-da) unsignedint
|
面板的停靠位置。在创建或编辑模式下需要指定Qt标签 Qt::DockWidgetArea 的整数值。 |
-dockFeatures(-df) unsignedint
|
面板的停靠特性,在创建或编辑模式下需要指定Qt标签 QDockWidget::DockWidgetFeatures整数值。. |
-exist(-ex)
|
面板是否存在。 |
-floating(-fl) boolean
|
面板是否浮动还是内置于MG-Picker工作室界面。 |
-installWidget(-iw) string
|
安装指定ID的用户界面到该面板。查看下面代码例子来获取更多信息。 |
-name(-n) string
|
创建面板时使用的初始名字,最终面板的ID将会是这个名字加前缀及可能的数字后缀。 如果没有提供名字则默认为 |
-pickerMode(-pm) unsignedint
|
是否在不同的MG-Picker界面模式下显示该面板,
比如该数值为 |
-remove(-rm)
|
移除该用户面板,其安装的用户控件也会被删除。 |
-title(-t) string
|
用户面板的标题。 |
-visible(-vis) boolean
|
The visibility of user panel. The visibility first get ruled by pickerMode, this flag serves as another layer of visibility. |
标签可以在创建模式中使用;
标签可以在编辑模式中使用
标签可以在查询模式中使用
标签可以在一条命令中多次使用.
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/6 QWidget into MG-Picker and make it an animator mode only widget.
# For PyQt5/6 it works in a similar way but you use sip instead of shiboken2/6.
from maya import cmds
from maya import OpenMayaUI as omui
from mgpicker import mgp
try:
from PySide2 import QtWidgets
from shiboken2 import wrapInstance
except Exception:
from PySide6 import QtWidgets
from shiboken6 import wrapInstance
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()