当input_raw()处于活动状态时,如何关闭GLUT窗口?python

当input_raw()处于活动状态时,如何关闭GLUT窗口?python,python,glut,Python,Glut,这可能是一个愚蠢的问题,但我无法独自解决这个问题,也没有在网上找到解决方案。我有一个使用GLUT创建窗口的PyOpenGl应用程序。当终端中的用户输入未“退出”时,程序应继续运行。大概是这样的: command = raw_input() while command != "quit": if command == "add_shape": draw_cube() elif command == "remove_shape": clear_wind

这可能是一个愚蠢的问题,但我无法独自解决这个问题,也没有在网上找到解决方案。我有一个使用GLUT创建窗口的PyOpenGl应用程序。当终端中的用户输入未“退出”时,程序应继续运行。大概是这样的:

command = raw_input()
while command != "quit":
    if command == "add_shape":
        draw_cube()
    elif command == "remove_shape":
        clear_window()
    elif command == "add_light":
        add_light()
    command = raw_input()
sys.exit("Application closed by the user")
问题是,当我可以
raw\u input()
使用“x”按钮关闭窗口时,不起作用,只有键入quit才能终止任务。起初我以为GLUT会有一个用于关闭窗口的回调函数,我可以用它来检测“x”按钮点击并强制终止应用程序,结果证明它确实有这样一个函数void
glutCloseFunc(void(*)(void)callback)
,但在
raw\u input()
处于活动状态时不会调用它。那么,什么是解决这个问题的好办法呢?如何从终端读取用户输入,并且仍然能够通过单击“x”按钮关闭应用程序

所需:

  • 从终端读取用户输入
可选:

  • 使用GLUT是可选的。我试过使用PyGame,但找不到从终端读取的解决方案,因为它只处理与窗口的交互

谢谢大家!

我认为最合理、最简单的方法是使用线程。因此,您将有一个线程侦听原始输入(),另一个线程侦听窗口关闭事件