我有一个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 的错误演员有关吗?
答案 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)))