gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:59:59 38 4
gpt4 key购买 nike

我正在编写一个 python tkinter 应用程序,它与我也在编写的 C++ 库接口(interface)。 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 block root.mainloop() ,这意味着一旦我的 GLUT 窗口启动,我的 tkinter GUI 就会失效。
我确实尝试添加 std::thread反对我的包装类,但 glutMainLoop退出后似乎退出整个进程,也就是说在线程中运行不利于干净退出。
我在想我可以使用 GLUT 的 atexit向 tkinter 发出信号,它需要关闭并加入线程,但理想情况下,当我关闭 GLUT 窗口时,进程不会结束(我认为这也不会给出干净的退出)。
是否有可能让这两个循环同时运行,并且干净地运行?
我想避免修改 GLUT 的源代码。

最佳答案

您不能将 GLUT 与其他窗口框架混合使用。至少不是没有经历很多痛苦。但人们不得不怀疑:GLUT 中有什么是您必须使用的?使用一些额外的模块,您可以在 TkInter Tkinter OpenGL context in Python 中创建 OpenGL 上下文

关于python - 我可以允许 tkinter 的 mainloop() 和 GLUT 的 glutMainLoop() 同时运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63125202/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com