【问题标题】:Maya API/ PySide2 , wrong argument in wrapInstanceMaya API/ PySide2 ,wrapInstance 中的参数错误
【发布时间】:2018-04-01 08:22:03
【问题描述】:

尝试学习一些PySide2 for Maya,但是PySide2还没有明确的文档,所以在网上搜索后再次来这里寻求帮助......

我会直奔问题——

from PySide2 import QtWidgets, QtGui
import maya.cmds as cmds
import maya.OpenMayaUI as mui
import shiboken2

def getMayaWindow():
    pointer  = mui.MQtUtil.mainWindow()
    if pointer is not None:
        return shiboken2.wrapInstance(long(pointer), QtWidgets)

错误:TypeError:文件第 9 行:使用错误的参数类型调用了“wrapInstance”:

wrapInstance(long, module)

支持的签名:

wrapInstance(size_t, PyType) #

最好的问候!

【问题讨论】:

    标签: python api pyqt pyside maya


    【解决方案1】:

    您应该尝试通过以下方式导入模块:

    import maya.cmds as cmds
    from PySide2.QtCore import * 
    from PySide2.QtGui import *
    from PySide2.QtWidgets import *
    import maya.OpenMayaUI as omui
    
    try:
        from shiboken import wrapInstance
    except:
        from shiboken2 import wrapInstance
    
    
    def getMayaWindow():    
        pointer = omui.MQtUtil.mainWindow()
        if pointer is not None:
            return shiboken2.wrapInstance(long(pointer), QWidget)
    
    getMayaWindow()  
    

    【讨论】:

    • 我不知道为什么我的方法行不通,但你的方式......它行得通!非常感谢!
    • 它不适合你,因为你应该写:shiboken2.wrapInstance(long(pointer), QtWidgets.QWidget())
    • 您确实应该避免使用import * 污染示波器的环境。也没有理由尝试除了。如果您已经知道您正在使用 PySide2,那么只需导入 shiboken2。弗拉德伦,你几乎拥有它。您只需将最后一行更改为QtWidgets.QWidget。答案很好,但教坏习惯是-1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多