# -*- coding: utf-8 -*- from maya import OpenMaya, mel, cmds import pymel.core as pm import pymel.core as pm from maya import cmds, mel, utils, OpenMaya import os import sys from PySide6.QtCore import Qt, QByteArray from PySide6.QtWidgets import QApplication, QMainWindow, QDockWidget, QListWidget, QTextEdit, QPushButton, QWidget from PySide6.QtCore import QSettings, QDataStream class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setObjectName('MainWindow') b = QPushButton('此为中央控件,点击保存布局') b.clicked.connect(self.save_layout) self.setCentralWidget(b) self.setWindowTitle('Dock 例子') self.load_layout() def save_layout(self): settings = QSettings(r"C:\Users\Jcen\PycharmProjects\pythonProject\settings.ini", QSettings.IniFormat) settings.setValue("geometry", self.saveGeometry()) settings.setValue("state", self.saveState()) settings.beginGroup("dockWidgets") dock_widgets = self.findChildren(QDockWidget) for dock_widget in dock_widgets: settings.setValue("%s%s" % (dock_widget.windowTitle(), dock_widget.objectName()), dock_widget.saveGeometry()) def load_layout(self): settings = QSettings(r"C:\Users\Jcen\PycharmProjects\pythonProject\settings.ini", QSettings.IniFormat) settings.beginGroup("dockWidgets") for key in settings.allKeys(): self.items = QDockWidget('%s' % (key[:-1]), self) self.items.setObjectName('%s' % (key[-1:])) self.addDockWidget(Qt.RightDockWidgetArea, self.items) settings.endGroup() self.restoreGeometry(settings.value("geometry")) self.restoreState(settings.value("state")) def create_tab( dock_name, widget, label='WidgetLabel', dockTab='Channel Box / Layer Editor' ): cmds.workspaceControl(dock_name, uiScript='', label=label) cmds.control(str(widget.objectName()), e=True, p=dock_name) tab_result = mel.eval('getUIComponentDockControl("{}", false)'.format(dockTab)) cmds.workspaceControl(dock_name, e=True, tabToControl=(tab_result, -1)) if OpenMaya.MGlobal.mayaState() == OpenMaya.MGlobal.kInteractive: # create project manager tab mayaProjectManager = MainWindow() create_tab( 'ProjectManagerDock1201111', mayaProjectManager, label='Project Manager' )