我正在编写一个Python Tcter应用程序,它与我正在编写的C++库接口。C++库包含一个包填充GLUT函数的类。
我的主要函数(python)如下所示:
import sys
import tkinter as tk
import myCustomCppLibrary
#This sets up the GLUT bindings.
myCustomCppLibrary.Initialize()
root = tk.Tk()
# ... some stuff
#Something in mainloop() eventually calls glutMainLoop()
root.mainloop()
myCustomCppLibrary.Finalize()
sys.exit(0)
不幸的是,glutMainLoop
阻塞了root.mainloop()
,这意味着一旦启动我的GLUT窗口,tkinter GUI就无法工作
我确实尝试将std::thread
对象添加到我的包装器类中,但是glutMainLoop
似乎在退出后退出整个进程,这意味着在线程中运行它不利于干净的退出
我在想,我可以使用GLUT的atexit
向tkinter发出信号,它需要关闭并连接线程,但理想情况下,当我关闭GLUT窗口时,该过程不会结束(我认为这也不会给出一个干净的退出)
是否可以让这两个循环同时运行,并干净地运行
我希望避免修改GLUT的源代码
不能将GLUT与其他窗口框架混合使用。至少不经历很多痛苦。但有人不禁要问:过剩中有什么东西是你必须使用的?通过一个额外的模块,您可以在TkInterTkinter OpenGL context in Python中创建OpenGL上下文
相关问题 更多 >
编程相关推荐