Windows 32上的PySide和VTK

时间:2013-04-04 14:10:37

标签: python windows qt pyside vtk

我有一个PySide / VTK应用程序,使用QVTKRenderWindowInteractor连接。 PySide 1.0.9在基于Unix的QT4.8 / VTK 5.8系统上运行正常。 (所有Python 2.7.3)

然后我使用PySide win32发行版(1.1.x)Qt4和VTK 5.10在Microsoft Windows系统(XP 32)上移植,并且在检索self.winId()时我在QVTKRenderWindowInteractor中出现类型错误可以转换为int:

TypeError: int() argument must be a string or a number, not 'PyCObject'

PySide API实际上说PySide.QtGui.QWidget.winId()返回一个长...

我开始在MS-Windows和Unix上进行更多测试,但也许你们中的一些人可以给我一些建议? 我需要寻找什么和在哪里?

与PySide接口生成器生成的 32位系统上的 long 的错误演员有关吗?

见第152行 http://sourceforge.net/p/pycgns/code/ci/17b696c3b0ad2b387b7e0ddc5d9b195cbc6abf70/tree/NAVigater/CGNS/NAV/Q7VTKRenderWindowInteractor.py

1 个答案:

答案 0 :(得分:0)

将此行替换为:

WId = self.winId()

if type(WId).__name__ == 'PyCObject':
    from ctypes import pythonapi, c_void_p, py_object

    pythonapi.PyCObject_AsVoidPtr.restype  = c_void_p
    pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object]

    WId = pythonapi.PyCObject_AsVoidPtr(WId)

self._RenderWindow.SetWindowInfo(str(int(WId)))