maya加载ui固定套路

mac2024-06-27  50

# -*- coding: utf-8 -*- # ========================================== # author: Ruben # mail: 773849069@qq.com # time: 2019/10/31 # ========================================== try: from shiboken import wrapInstance import pysideuic as uic from PySide.QtGui import * from PySide.QtCore import * except: from shiboken2 import wrapInstance import pyside2uic as uic from PySide2.QtGui import * from PySide2.QtWidgets import * from PySide2.QtCore import * from PySide2 import QtCore try: from maya import OpenMayaUI import maya.mel as mel import maya.cmds as mc except IOError: pass # --*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--* def loadUiType(ui_file): """加载 ui 文件""" from cStringIO import StringIO import xml.etree.ElementTree as xml parsed = xml.parse(ui_file) widget_class = parsed.find('widget').get('class') form_class = parsed.find('class').text with open(ui_file, 'r') as f: pyFileString = StringIO() frame = {} uic.compileUi(f, pyFileString, indent=0) pyc = compile(pyFileString.getvalue(), '<string>', 'exec') exec pyc in frame form_class = frame['Ui_%s' % form_class] print form_class base_class = eval(widget_class) return base_class, form_class def getMayaWindow(): """获取maya主界面窗口名称""" window = OpenMayaUI.MQtUtil.mainWindow() return wrapInstance(long(window), QWidget) uiTestFile = "D:/_____Ruben_____/untitled.ui" base_class, form_class = loadUiType(uiTestFile) class CreateUI(base_class, form_class): def __init__(self, parent=getMayaWindow()): super(CreateUI, self).__init__(parent=parent) # 安装 QMainWindow 窗口 self.setupUi(self) # 安装控件, 这是 ui 文件内继承过来的函数 self.signal_slot() self.show() def signal_slot(self): """信号 槽""" Qcon = QObject.connect Qcon(self.btn1, SIGNAL("clicked()"), self.btn1_func) # Qcon(self.btn1, SIGNAL("clicked()"), lambda : self.process_trigger(self.btn_func)) # Qcon(self.btn1, SIGNAL("clicked()"), self.process_trigger(self.btn_func)) def btn1_func(self, *args, **kwargs): """信号链接方法 1 """ print 11 self.close() @Slot(bool) def on_btn2_clicked(self, *args, **kwargs): """信号链接方法 2 """ print 22 if __name__ == '__main__': win = CreateUI()
最新回复(0)