在wxPython

时间:2018-02-05 17:58:00

标签: python wxpython wxwidgets mayavi

更新:我已在代码中放置了打印命令以隔离错误时刻。以下代码的输出为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。

关于此事的任何建议都将是一个巨大的帮助 - 让我知道我是否可以自己回答任何问题。

0 个答案:

没有答案