在python中没有sip或shiboken的Wrapinstance

时间:2014-10-26 08:54:17

标签: python-2.7 qt pyside

我在maxplus中有一些问题,在3ds max中使用pyside的python发行版。

我尝试将我的qtmainwindow设为最大窗口。当max最小化时,最小化我的qtmainwindow。

我们希望保持maxplus python安装不受影响,因此我无法安装sip或shiboken来使用wrapinstance来获取qobject。现在我想知道如果没有这些包,就可以实现育儿。

编辑: 我认识到shiboken是可用的,但是当我尝试将我的QMainWindow归结为应用程序时它会给出一个

** system exception **

这里有一些代码我希望有助于理解:

from PySide import QtCore, QtGui,shiboken
import MaxPlus
class ControlMainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):

        super(ControlMainWindow, self).__init__(parent)
        maxWinHwd = MaxPlus.Core.GetWindowHandle()
        parent=shiboken.wrapInstance(long(maxWinHwd), QtGui.QWidget)
        self.setParent(parent)

def main():
    global app
    app = QtGui.QApplication.instance()
    if not app:
        app = QtGui.QApplication(sys.argv)
    global window
    window=ControlMainWindow()
    window.show()


if __name__ == '__main__':
    main()   

提前致谢

1 个答案:

答案 0 :(得分:0)

我现在正在处理完全相同的问题,所以这是我迄今为止发现的最佳解决方案,可以在不必依赖Blur 3ds max Python扩展的情况下使用OOTB:

http://tech-artists.org/forum/showthread.php?5162-MaxPlus-parent-PySide-Window-to-Max-Window

我也试图在这里制作一个评论版的代码,虽然我是ctypes的新手,所以它可能不是100%正确:

http://pastebin.com/Sed2g89N

我希望有所帮助!