PyQt/lesson1/maya_qt.py
2024-10-04 13:00:37 +08:00

70 lines
2.4 KiB
Python

# -*- 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'
)