如何在 input_raw() 处于活动状态时关闭 GLUT Window? Python

How to close GLUT Window when input_raw() is active? Python

这可能是一个愚蠢的问题,但我自己无法解决这个问题,也没有在网上找到解决方案。我有一个 PyOpenGl 应用程序,它使用 GLUT 创建它的 window。当 TERMINAL 中的用户输入不是 "quit" 时,程序应该继续 运行。像这样:

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

问题是,当我可以使用 "x" 按钮 raw_input() 关闭 window 时不起作用,只有键入 quit 才能终止任务。起初我以为 GLUT 会有一个关闭 window 的回调函数,我可以用它来检测 "x" 按钮点击并强制终止应用程序,结果它确实有这样一个函数 void glutCloseFunc(void(*)(void)callback) 但在 raw_input() 处于活动状态时不会调用它。那么对此有什么好的解决方案呢?如何从终端读取用户输入并仍然能够通过单击 "x" 按钮关闭我的应用程序?

要求:

可选:

谢谢!

我认为最合乎逻辑且最简单的方法是使用线程。所以你会有一个线程来监听 raw_inputs() 和另一个线程来监听 window 关闭事件。