如何在 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" 按钮关闭我的应用程序?
要求:
- 从终端读取用户输入。
可选:
- 使用 GLUT 是可选的。我试过 PyGame,但找不到从终端读取的解决方案,因为它只处理与 window.
的交互
谢谢!
我认为最合乎逻辑且最简单的方法是使用线程。所以你会有一个线程来监听 raw_inputs() 和另一个线程来监听 window 关闭事件。
这可能是一个愚蠢的问题,但我自己无法解决这个问题,也没有在网上找到解决方案。我有一个 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" 按钮关闭我的应用程序?
要求:
- 从终端读取用户输入。
可选:
- 使用 GLUT 是可选的。我试过 PyGame,但找不到从终端读取的解决方案,因为它只处理与 window. 的交互
谢谢!
我认为最合乎逻辑且最简单的方法是使用线程。所以你会有一个线程来监听 raw_inputs() 和另一个线程来监听 window 关闭事件。