首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将wxpython与Mayavi一起用于UI,会在"decorated_scene.py“文件中抛出错误

将wxpython与Mayavi一起用于UI,会在"decorated_scene.py“文件中抛出错误
EN

Stack Overflow用户
提问于 2021-11-19 12:56:41
回答 1查看 113关注 0票数 1

我运行了一个python程序,它使用Mayavi来显示地理参考的DEM(数字高程模型)。它在Anaconda环境下运行非常好。但是,在windows上运行时,需要为UI安装PyQt/PySide/wxpython (显示3D模型)。

在运行代码时,它开始抛出此错误。

代码语言:javascript
复制
wx._core.wxAssertionError: C++ assertion "strcmp(setlocale(0, 0), "C") == 0" failed at ..\..\src\common\intl.cpp(1694) in wxLocale::GetInfo(): You probably called setlocale() directly instead of using wxLocale and now there is a mismatch between C/C++ and Windows locale.
Things are going to break, please only change locale by creating wxLocale objects to avoid this!

我建议this 1this 2通过在代码开头包括以下内容来解决这个错误

代码语言:javascript
复制
import locale
locale.setlocale(locale.LC_ALL, 'C')

还有另一个错误。此错误是由于文件_C:\Python38\lib\site-packages\tvtk\pyface\ui\wx_decorated_scene.py中的命令m.set_outline_color(1,1,1)与当前版本的wx不兼容造成的。

错误:

代码语言:javascript
复制
D:\supriya\CODES_ALL>python 3D_Mayavi_Interactive_Plot.py
wx
Traceback (most recent call last):
  File "3D_Mayavi_Interactive_Plot.py", line 286, in <module>
    surf = mlab.surf(data, color=(1,1,1), warp_scale=0.5) #
  File "C:\Python38\lib\site-packages\mayavi\tools\helper_functions.py", line 38, in the_function
    return pipeline(*args, **kwargs)
  File "C:\Python38\lib\site-packages\mayavi\tools\helper_functions.py", line 78, in __call__
    scene = tools.gcf().scene
  File "C:\Python38\lib\site-packages\mayavi\tools\figure.py", line 117, in gcf
    return figure(engine=engine)
  File "C:\Python38\lib\site-packages\mayavi\tools\figure.py", line 69, in figure
    engine.new_scene(name=name, size=size)
  File "C:\Python38\lib\site-packages\apptools\scripting\recordable.py", line 48, in _wrapper
    result = func(*args, **kw)
  File "C:\Python38\lib\site-packages\mayavi\core\engine.py", line 452, in new_scene
    viewer = self.scene_factory(**factory_kwargs)
  File "C:\Python38\lib\site-packages\mayavi\core\ui\mayavi_scene.py", line 89, in viewer_factory
    viewer.open()
  File "C:\Python38\lib\site-packages\pyface\i_window.py", line 203, in open
    self._create()
  File "C:\Python38\lib\site-packages\pyface\ui\wx\application_window.py", line 125, in _create
    contents = self._create_contents(self.control)
  File "C:\Python38\lib\site-packages\tvtk\tools\ivtk.py", line 406, in _create_contents
    self.scene = self._scene_factory(parent)
  File "C:\Python38\lib\site-packages\mayavi\core\ui\mayavi_scene.py", line 68, in mayavi_scene_factory
    s = MayaviScene(parent, stereo=p['stereo'])
  File "C:\Python38\lib\site-packages\tvtk\pyface\ui\wx\decorated_scene.py", line 70, in __init__
    self._setup_axes_marker()
  File "C:\Python38\lib\site-packages\tvtk\pyface\ui\wx\decorated_scene.py", line 127, in _setup_axes_marker
    self._background_changed(self.background)
  File "C:\Python38\lib\site-packages\tvtk\pyface\ui\wx\decorated_scene.py", line 204, in _background_changed
    m.outline_color(0,0,0)
TypeError: 'tuple' object is not callable
Error in atexit._run_exitfuncs:
wx._core.wxAssertionError: C++ assertion "GetEventHandler() == this" failed at ..\..\src\common\wincmn.cpp(470) in wxWindowBase::~wxWindowBase(): any pushed event handlers must have been removed

解决办法如下:

EN

回答 1

Stack Overflow用户

发布于 2021-11-19 12:56:41

开放_C:\Python38\lib\site-packages\tvtk\pyface\ui\wx_decorated_scene.py.

找到这一行m.set_outline_color(1,1,1)并将其替换为m.outline_color = (1,1,1)

完事了!

这是我在QnA格式的堆栈溢出上的第一篇文章。如果有什么需要我即兴发挥的,请指导我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70035195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档