我可以允许tkinter的mainloop()和GLUT的glutMainLoop()同时运行吗?

2024-10-02 02:27:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个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的源代码


Tags: 函数import应用程序tkinterassyssetsroot
1条回答
网友
1楼 · 发布于 2024-10-02 02:27:28

不能将GLUT与其他窗口框架混合使用。至少不经历很多痛苦。但有人不禁要问:过剩中有什么东西是你必须使用的?通过一个额外的模块,您可以在TkInterTkinter OpenGL context in Python中创建OpenGL上下文

相关问题 更多 >

    热门问题