#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys from maya import cmds import maya.OpenMayaUI as omui from PySide2 import QtWidgets, QtCore from shiboken2 import wrapInstance from . import config from .ui import menu, toolshelf from .utils import maya_utils class MetaFusion(QtWidgets.QMainWindow): def __init__(self, parent=None): super(MetaFusion, self).__init__(parent) # 设置窗口标题和基本属性 self.setWindowTitle("MetaFusion") self.setMinimumSize(1200, 800) # 加载样式表 style_file = os.path.join(os.path.dirname(__file__), "ui", "style.qss") with open(style_file, "r", encoding="utf-8") as f: self.setStyleSheet(f.read()) # 创建主窗口部件 self.main_widget = QtWidgets.QWidget() self.setCentralWidget(self.main_widget) # 创建主布局 self.main_layout = QtWidgets.QVBoxLayout(self.main_widget) # 初始化UI组件 self._init_ui() def _init_ui(self): """初始化UI组件""" # 创建工具架 self.tool_shelf = toolshelf.ToolShelf(self) self.main_layout.addWidget(self.tool_shelf) # 创建标签页 self.tab_widget = QtWidgets.QTabWidget() self.main_layout.addWidget(self.tab_widget) # 添加各个功能页面 self._add_meshes_tab() self._add_rigging_tab() self._add_behaviour_tab() self._add_definition_tab() def _add_meshes_tab(self): """添加模型页面""" from .ui.meshes import MeshesTab meshes_widget = MeshesTab() self.tab_widget.addTab(meshes_widget, "模型") def _add_rigging_tab(self): """添加绑定页面""" from .ui.rigging import RiggingTab rigging_widget = RiggingTab() self.tab_widget.addTab(rigging_widget, "绑定") def _add_behaviour_tab(self): """添加行为页面""" from .ui.behaviour import BehaviourTab behaviour_widget = BehaviourTab() self.tab_widget.addTab(behaviour_widget, "行为") def _add_definition_tab(self): """添加定义页面""" from .ui.definition import DefinitionTab definition_widget = DefinitionTab() self.tab_widget.addTab(definition_widget, "定义") def show(): """显示主窗口""" # 获取Maya主窗口 maya_main_window = wrapInstance(int(omui.MQtUtil.mainWindow()), QtWidgets.QWidget) # 创建并显示插件窗口 global meta_fusion_window meta_fusion_window = MetaFusion(parent=maya_main_window) meta_fusion_window.show()