Ошибка 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")

Для более подробной информации, вы можете обратиться к этим ссылкам:

Ошибка PyTpenGL GLUT ctypes

ctypes.ArgumentError с file_reader на Python 3

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

Другие вопросы по тегам