更新:我已在代码中放置了打印命令以隔离错误时刻。以下代码的输出为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。
关于此事的任何建议都将是一个巨大的帮助 - 让我知道我是否可以自己回答任何问题。