2013-04-04 38 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)))