我正在尝试使用 GLUT 在 Python(v2.7) 程序中创建右键单击弹出菜单。我没有找到用于执行此操作的特定于 Python 的文档,因此我使用了 C++ 文档,它们通常几乎相似。
这是我所拥有的:
if __name__=="__main__":
glutInit(sys.argv)
#...more initialization code...
createMenu()
init()
glutMainLoop()
下面是创建菜单的函数:
def createMenu():
menu = glutCreateMenu(processMenuEvents)
glutAddMenuEntry("One", 1)
glutAddMenuEntry("Two", 2)
glutAttachMenu(GLUT_RIGHT_BUTTON)
def processMenuEvents(option):
logging.debug("Menu pressed")
# not using 'option' right now
菜单显示正确,但是当我点击一个项目时,我得到这个错误:
DEBUG:root:Menu pressed:
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 338, in 'converting callback result'
TypeError: an integer is required
Exception in <function processMenuEvents at 0x1760b90> ignored
python-opengl 有不同的方法吗?我在这里做错了什么?
谢谢。
请您参考如下方法:
不幸的是,PyOpenGL 定义回调函数的方式需要一个 int 作为返回类型,而不是 void。下面是您的 CreateMenu 回调函数的更新版本,应该可以使用。
def CreateMenu():
menu = glutCreateMenu(processMenuEvents)
glutAddMenuEntry("One", 1)
glutAddMenuEntry("Two", 2)
glutAttachMenu(GLUT_RIGHT_BUTTON)
# Add the following line to fix your code
return 0
