Внедрение Enthought Mayavi с проблемами wx

Сначала моя работающая система:

Я использую Windows 8 Pro и Mayavi 4.3 из репозитория вместе с wxPython 2.9.4.0 на Python 2.7.4, но у меня была такая же проблема с mayavi 4.2.1 из пакета EPD...

Когда я пытаюсь встроить Mayavi в панель ноутбука, у меня возникают проблемы с пользовательским интерфейсом. Даже в демо-файле от mayavi у меня такое же странное поведение внешних фреймов, генерируемых mayavi.

Итак, с помощью кнопки настроек открывается окно настроек. Также сцена реагирует на параметры, которые я изменил с помощью настроек. Но после нажатия ОК или канцелярии окно не закрывается. И python возвращает несколько сообщений об ошибках. Аналогичное поведение было, когда я использовал конвейер, внедрив команду mlab.show_pipeline().

Такое поведение можно найти в примере из сети enthought. страница тоже.

Здесь вы можете увидеть мое сообщение об ошибке после попытки нажать OK в рамке настроек приведенного примера:

C:\my_directory\>python wx_embedding.py
C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\wx\toolkit.py:35: wxPyDeprecationWarning: Using deprecated class PySimpleApp.
 _app = wx.PySimpleApp()

wx_embedding.py:63: wxPyDeprecationWarning: Using deprecated class PySimpleApp.
app = wx.PySimpleApp()

Traceback (most recent call last): File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\wx\ui_live.py", line 360, in _on_ok
self.close( wx.ID_OK )

File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\wx\ui_live.py", line 320, in close

ui.finish()
File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\ui.py", line 264, in finish

self.reset( destroy = True )
File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\ui.py", line 304, in reset
editor.dispose()
File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\wx\instance_editor.py", line 208, in dispose
self._ui.dispose()

File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\ui.py", line 237, in dispose
self.finish()
File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\ui.py", line 264, in finish
self.reset( destroy = True )

File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\ui.py", line 318, in reset
toolkit().destroy_children( self.control )
File "C:\Python27\lib\site-packages\enthougth_development_mayavi_git\traitsui\traitsui\wx\toolkit.py", line 474, in destroy_children
control.DestroyChildren()

File "C:\Python27\lib\site-packages\wx-2.9.4-msw\wx\_core.py", line 9203, in DestroyChildren
return _core_.Window_DestroyChildren(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "GetEventHandler() == this" failed at .    .\..\src\common\wincmn.cpp(468) in wxWindowBase::~wxWindowBase(): any pushed event handlers must have been removed

заранее спасибо


person Stephan Brückner    schedule 22.04.2013    source источник


Ответы (2)


Mayvi не совместим с wx 2.9.

Подробнее здесь: https://support.enthought.com/entries/22601196-wxPython

Пожалуйста, используйте enpkg, чтобы вернуться к wx 2.8, который поставляется с EPD.

person Jonathan March    schedule 22.04.2013
comment
Джонатан -- Я получил то же поведение, что и Стефан, используя wxPython 3.0. Согласно этому ответу, я вернулся к wx 2.8, но все еще вижу то же поведение? - person brettb; 01.03.2016
comment
Этот ответ почти 3 года назад был для давно устаревшей версии Mayavi. Я предлагаю вам опубликовать новый вопрос, включая всю соответствующую информацию о вашей версии и ОС, и вернуться к этому вопросу. - person Jonathan March; 01.03.2016

По крайней мере, это конкретное исключение можно решить с помощью изменений, связанных с этим PR: https://github.com/enthought/traitsui/pull/108. Я еще не знаю о Mayavi и остальном стеке, но это изменение, по крайней мере, заставит traitsui работать с wxPython 2.9.

person RobinDunn    schedule 24.04.2013