在wxPython中嵌入mayaVI

2024-06-24 12:02:12 发布

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

更新:我在代码中放置了print命令,以隔离错误时刻。下面代码的输出是a b c d。最后,我使用提供的替代代码切换到pyqt/pyside,但请告诉我是否可以从当前设置中以任何其他方式帮助调试此问题。在

from numpy import ogrid, sin
from traits.api import HasTraits, Instance
from traitsui.api import View, Item
from mayavi.sources.api import ArraySource
from mayavi.modules.api import IsoSurface
from mayavi.core.ui.api import SceneEditor, MlabSceneModel

class MayaviView(HasTraits):

    scene = Instance(MlabSceneModel, ())

    print "a"

    view = View(Item('scene', editor=SceneEditor(), resizable=True,
                show_label=False),
                resizable=True)

    print "b"

    def __init__(self):

        print "z"

        HasTraits.__init__(self)
        x, y, z = ogrid[-10:10:100j, -10:10:100j, -10:10:100j]
        scalars = sin(x*y*z)/(x*y*z)
        src = ArraySource(scalar_data=scalars)
        self.scene.engine.add_source(src)
        src.add_module(IsoSurface())

#-----------------------------------------------------------------------------
# Wx Code
import wx

print "c"

class MainWindow(wx.Frame):

    print "d"

    def __init__(self, parent, id):

        print "e"

        wx.Frame.__init__(self, parent, id, 'Mayavi in Wx')
        self.mayavi_view = MayaviView()
        self.control = self.mayavi_view.edit_traits(
                        parent=self,
                        kind='subpanel').control
        self.Show(True)

app = wx.PySimpleApp()
frame = MainWindow(None, wx.ID_ANY)
app.MainLoop()

初始帖子:

我试图在mayaVI的网站上复制官方代码,以便嵌入wxWidgets(Wx embedding example)。在

第一个错误发生在使用app = wx.PySimpleApp()时,我通过一个在线建议将其更改为app = wx.App(False)。在

在这一步之后,程序运行时不会出现命令行错误,但在数据可视化步骤中会挂起(python可视化窗口不会打开,但会显示为图标)。在

为了测试我的模块是否正确安装,我使用了MayaVI的官方Qt示例(Qt embedding example)——它工作得非常好。在

详细信息:我在conda环境中运行Pythonw v=2.7.14,wxPython v=4.0.1(osx cocoa phoenix)和mayaVI v=4.5.0,全部通过macOS High Sierra版本10.13.3运行。在

在这件事上的任何建议都将是一个巨大的帮助-让我知道如果我能回答我自己。在


Tags: 代码fromimportselfviewapitrueapp