Ошибка Python glutCreateWindow 'неправильный тип'
Я пытаюсь создать окно с переизбытком в Python и иметь следующий код:
glutInit()
glutInitWindowSize(windowWidth, windowHeight)
glutInitWindowPosition(int(centreX - windowWidth/2), int(centreY - windowHeight/2))
glutCreateWindow("MyWindow")
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH)
glutDisplayFunc(displayFun)
glutIdleFunc(animateFun)
glutKeyboardFunc(keyboardFun)
glutPassiveMotionFunc(mouseFun)
glutReshapeFunc(reshapeFun)
initFun()
#loadTextures()
glutMainLoop()
Я получаю сообщение об ошибке в строке 'glutCreateWindow', говоря это:
Traceback (most recent call last):
File "F:\MyProject\main.py", line 301, in <module>
glutCreateWindow("MyWindow")
File "C:\Python34\lib\site-packages\OpenGL\GLUT\special.py", line 73, in glutCreateWindow
return __glutCreateWindowWithExit(title, _exitfunc)
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
документация по этой функции указывает
int glutCreateWindow(char *name);
4 ответа
Я только что столкнулся с точно такой же проблемой и нашел эту запись в блоге:
http://codeyarns.com/2012/04/27/pyopengl-glut-ctypes-error/
По сути, вам нужно указать, что вы передаете байтовые данные, а не строку, используя b'Window Title'
Помимо добавления b
перед строкой:
b"MyWindow"
Вы также можете преобразовать строку в байты ascii следующим образом:
bytes("MyWindow","ascii")
Для более подробной информации, вы можете обратиться к этим ссылкам:
def glutCreateWindow(title):
"""Create window with given title
This is the Win32-specific version that handles
registration of an exit-function handler
"""
return __glutCreateWindowWithExit(title.encode(), _exitfunc)
Чтобы окончательно решить проблему, вам нужно изменить содержимое файла lib/site-packages/OpenGL/GLUT/special.py следующим образом:
def glutCreateWindow(title):
"""Create window with given title
This is the Win32-specific version that handles
registration of an exit-function handler
"""
return __glutCreateWindowWithExit(bytes(title,"ascii"), _exitfunc)
На Windows 7 64-разрядная с Intel Core Duo
установлено: python-3.4.0.amd64.exe
pip install image
pip install numpy
скачанный пакет колес с: http://www.lfd.uci.edu/~gohlke/pythonlibs/
имеющий PyOpenGL-3.1.1-cp34-cp34m-win_amd64.whl
попытался установить pip установить PyOpenGL-3.1.1-cp34-cp34m-win_amd64.whl
получил сообщение:
PyOpenGL-3.1.1-cp34-cp34m-win_amd64.whl is not supported wheel on this platform
обновленный пункт:
python -m pip --upgrade pip
после обновления он был успешно установлен
pip install PyOpenGL-3.1.1-cp34-cp34m-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.1-cp34-cp34m-win_amd64.whl
хотел запустить код с: http://noobtuts.com/python/opengl-introduction
получил ошибку:
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
измененная функция: glutCreateWindow("name")
в glutCreateWindow(b'name')
и запустил его.
суммировать:
python -m pip --upgrade pip
pip install image
pip install numpy
pip install PyOpenGL-3.1.1-cp34-cp34m-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.1-cp34-cp34m-win_amd64.whl
изменить вызов с glutCreateWindow("name")
в glutCreateWindow(b'name')