【问题标题】:You need a shiboken-based type你需要一个基于 shiboken 的类型
【发布时间】:2015-06-29 13:47:32
【问题描述】:

当我运行代码时,我收到以下错误第 11 行:您需要基于 shiboken 的类型。不知道我在这里做错了什么。当我只运行 GetMayaWindow() 时,它运行正常,但是在 init 中运行时,它给了我错误

import shiboken
from PySide import QtGui
import maya.OpenMayaUI as apiUI
from cStringIO import StringIO
import pysideuic
import xml.etree.ElementTree as xml

def GetMayaWindow():
    ptr = apiUI.MQtUtil.mainWindow()
    if ptr is not None:
        return shiboken.wrapInstance(long(ptr),QtGui.QMainWindow)

def LoadUiType(ui_file):
    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:
        o = StringIO()
        frame = {}

        pysideuic.compileUi(f,o,indent = 0)
        pyc = compile(o.getvalue(),'<string>','exec')
        exec pyc in frame

        form_class = frame ['Ui_{0}'.format(form_class)]
        base_class = eval('QtGui.{0}'.format(widget_class))

    return form_class,base_class

import shiboken
from PyQt4 import QtGui,QtCore,uic
from pymel.core import *
import pymel.core as pm
from pymel import *

ui_file = "D:/Swapnil/Workspace/R&D/modellingTools/ModellingTools.ui"
list_form,list_base = LoadUiType(ui_file)

class ModellingToolsUI(list_form,list_base):
    def __init__(self, parent =GetMayaWindow()):
        self.window_name = 'modellingTools'

        if window(self.window_name,exists = True ):
            deleteUI (seld.window_name)

        super(ModellingToolsUI,self).__init__(parent)
        self.setupUi(self)


def run_plugin():
    ex = ModellingToolsUI()
    ex.show()

【问题讨论】:

    标签: python pyqt4 pyside maya


    【解决方案1】:

    您不能混合使用 PySide 和 PyQt 类/对象。

    QtGui 模块被导入两次,因此sys.modules 将包含PySide.QtGuiPyQt4.QtGui 的条目。但由于sys.modulesdict,python 无法保证以后引用QtGui 时会得到哪个。

    在您的情况下,很明显 QtGui.QMainWindow 实际上是一个 PyQt4 类,这就是您收到该错误的原因。

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2010-12-28
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多