如何让MayaVi2默认使用/使用Qt而不是wx?

时间:2013-05-03 02:57:04

标签: enthought

以前我一直在使用Mac端口维护的python环境。我有一些使用PyQT,VTK,matplotlib等的基本脚本。我已经能够使用Paraview但对我的用途看起来有点沉重,所以我会尝试MayaVi2(和TVTK)。

我下载并尝试手动安装,但事实证明这很麻烦。所以我想我会咬紧牙关并尝试Canopy(学术许可证)。基于这个VTK/Mayavi on Mac OS X表明Qt,VTK和MayaVI世界都很好,我安装了64位Canopy。

我无法让mayavi2在Canopy环境中工作。它运行,但控制台出现很多错误,如果我调出任何对话框/设置框,“按钮”无法正常工作。当我尝试启动mayavi2时,这是第一个错误(几个屏幕已满):

  

(Canopy 64bit)scratch_pad 501 $ mayavi2 Traceback(最近一次通话   最后):文件   “/Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/pyface/ui/wx/splash_screen.py”   第121行,在_on_paint中       dc = wx.PaintDC(窗口)

我实际上对TVTK更感兴趣,所以我尝试了网站图库http://docs.enthought.com/mayavi/mayavi/auto/examples.html中的一些mayavi演示。我尝试过的少数几种 - 一种有效的,就是它们显示了一个VTK(?)窗口/场景,我可以与VTK窗口进行交互。一切都很好,直到我打开设置/对话窗口,然后没有对话窗口“按钮”工作,我必须强制退出。当我打开plot3D demo中的“设置”按钮时,这是最后一行错误:

  

简单演示:文件   “/Users/michael/Library/Enthought/Canopy_64bit/System/lib/python2.7/site-packages/wx/_core.py”   第8162行,在DestroyChildren       return core .Window_DestroyChildren(* args,** kwargs)wx._core.PyAssertionError:C ++断言“GetEventHandler()== this”   在/BUILD/wxPython-src-2.9.2.4/src/common/wincmn.cpp(468)中失败了   ~wxWindowBase():必须删除任何推送的事件处理程序

我甚至尝试过

  

ipython --gui = wx

(如页面上所示)但在这种情况下它会崩溃,没有窗口。

根据控制台上的错误消息,它们似乎都与wx相关。我的理解是,Canopy环境是“自足的”,但我的旧环境是否会有某种冲突?我怎么会测试这个?

有没有办法,环境变量,mayavi2可以使用Qt而不是wx?我不在任何本地python脚本中使用wx,所以除非在Canopy中需要它,否则我很乐意禁用,如果这是一个选项。

有什么想法吗?

1 个答案:

答案 0 :(得分:9)

运行Mayavi Gallery中的大部分示例后,我发现我需要通知Traits使用Qt。这是通过使用sys.environment()调用在脚本中设置环境变量来完成的。我决定在我的.profile中将环境变量ETS_TOOLKIT设置为qt4,如下所示:**

export ETS_TOOLKIT=qt4

Mayavi2现在像宣传的那样工作!