名称错误:未定义全局名称“BaseFunction”

Posted

技术标签:

【中文标题】名称错误:未定义全局名称“BaseFunction”【英文标题】:Name Error: global name 'BaseFunction' is not defined 【发布时间】:2019-09-09 19:16:25 【问题描述】:

我正在学习 pygame 教程 (thenewboston),但我在使用 pyOpenGL 时遇到了一些问题。 我在 anaconda-spyder3.3.4 上使用 python 2.7

代码如下:

from OpenGL.GL import *

import pygame

from pygame.locals import *

from OpenGL.GLU import *

vertices = (
    (1, -1, -1),
    (1, 1, -1),
    (-1, 1, -1),
    (-1, -1, -1),
    (1, -1, 1),
    (1, 1, 1),
    (-1, -1, 1),
    (-1, 1, 1),
        )

edges = (
    (0,1),
    (0,3),
    (0,4),
    (2,1),
    (2,3),
    (2,7),
    (6,3),
    (6,4),
    (6,7),
    (5,1),
    (5,4),
    (5,7),

    )

def Draw_Cube():
    glBegin(GL_LINES) # delimit vertices.
    for edge in edges:
        for vertex in edge:
            glVertex3fv(vertices[vertex])

    glEnd()

def main():
    pygame.init()
    display = (800, 600)

    pygame.display.set_mode(display, DOUBLEBUF|OPENGL) 

    gluPerspective(45.0, display[0]/ display[1], 1, 50.0 )

    glTranslatef(0.0,0.0, -5.0)

    glRotatef(20, 0, 0, 0)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()



        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

        Draw_Cube()
        pygame.display.update()
        pygame.time.wait(10)
main()

我希望得到一个 3D 立方体,但它显示的是这个回溯:

  Traceback (most recent call last):

 File "<ipython-input-8-72d57f8b0dbe>", line 1, in <module>
      glEnd()

 File "/home/cadu/anaconda2/lib/python2.7/site-packages/OpenGL  /latebind.py", line 61, in __call__
        return self.wrapperFunction( self.baseFunction, *args, **named )

 File "/home/cadu/anaconda2/lib/python2.7/site-packages/OpenGL/GL/exceptional.py", line 45, in glEnd

return BaseFunction( )

NameError: global name 'BaseFunction' is not defined

所以,我正在尝试在文档中进行搜索,但我没有找到任何关于它的信息。可能是pyOpenGL安装吗?

【问题讨论】:

在我的电脑上它不适用于pygame.display.update() - 它说它无法更新 OPENGL 显示 - 但它适用于 pygame.display.flip()。 Linux Mint 19.1 / Python 3.7 / PyGame 1.9.5 停止使用 Python 2 - 请参阅 pythonclock.org @furas,我试图更改为 python 3,但遇到了另一个问题:***.com/questions/55839655/… 【参考方案1】:

切换到 Python 3.5 后,它就像 Charm 一样工作。

【讨论】:

以上是关于名称错误:未定义全局名称“BaseFunction”的主要内容,如果未能解决你的问题,请参考以下文章

NameError:未定义全局名称“reduce”

未定义全局名称“lats”

熊猫不进口吗? 'NameError:未定义全局名称'pandas''

NameError:未定义全局名称“QColor”

NameError:未定义全局名称“myLogFile”

NameError:未定义全局名称“lower”