2013-04-04 37 views
0

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

然后我端口在Microsoft Windows系统(XP 32),与PySide win32分布式(1.1.x)Qt4和VTK 5.10,我有一个类型错误QVTKRenderWindowInteractor同时检索自我预计将被强制转换为INT .winId():

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

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

我开始有些在MS-Windows和Unix上都有更多的测试,但也许有些人可以给我一个建议? 什么和我在哪里寻找?

难道是关系到这个32位不好投系统,由PySide接口生成Qt的产生?

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

+0

注册为PySide错误:https://bugreports.qt-project.org/browse/PYSIDE-46和固定用这个bug报告中描述的提示。 – Marcvs 2013-04-08 07:08:54

回答

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)))