Python Kivy GUI在打开Mayavi窗口后崩溃

Python Kivy GUI在打开Mayavi窗口后崩溃,python,kivy,kivy-language,mayavi,mayavi.mlab,Python,Kivy,Kivy Language,Mayavi,Mayavi.mlab,我有一个Kivy GUI,它应该在按下相应的按钮后打开一个Mayavi 3D绘图窗口。绘图工作正常,但在关闭Mayavi窗口后,主GUI仍然没有响应,绘图按钮被卡住。具有讽刺意味的是,被卡住的按钮是唯一一个通过再次生成相同的绘图来响应任何事情的元素。其他GUI元素不响应任何东西,而且,当窗口调整大小时,GUI元素不再缩放 这个问题可以通过这个最小的Python脚本重现: from kivy.app import App from kivy.uix.button import Button fro

我有一个Kivy GUI,它应该在按下相应的按钮后打开一个Mayavi 3D绘图窗口。绘图工作正常,但在关闭Mayavi窗口后,主GUI仍然没有响应,绘图按钮被卡住。具有讽刺意味的是,被卡住的按钮是唯一一个通过再次生成相同的绘图来响应任何事情的元素。其他GUI元素不响应任何东西,而且,当窗口调整大小时,GUI元素不再缩放

这个问题可以通过这个最小的Python脚本重现:

from kivy.app import App
from kivy.uix.button import Button
from mayavi import mlab

class MyApp(App):

    def show(self, _=None):
        mlab.test_contour3d()
        mlab.show()

    def build(self):
        btn1 = Button(text='Oh hai', size_hint=(0.5, 0.5))
        btn1.bind(on_release=self.show)
        return btn1


MyApp().run()

但它还是被卡住了。我也试着用Vispy绘制图,但失败的机制没有什么不同。非常感谢您的任何想法。

这很有趣,我能够用这个例子重现它。我认为问题可能是mayavi对opengl的使用弄乱了Kivy opengl的上下文,但如果是这样的话,我不知道如何修复它。这也意味着Kivy的内部结构仍然可以正常工作,只是gui已经损坏,这就是为什么按钮仍然可以工作的原因。从未使用过Kivy,但是您通常不需要告诉父进程(这里是Kivy)子进程(这里是mayavi)已经结束吗?也许这段代码()或这篇文档()中有一些想法。