简体   繁体   中英

importing traitsui editor cause wx error in python

My question is identical to this unanswered question , but I wanted to add my context (package versions) and could not upvote the previous question for lack of reputation points. (Please let me know how I should have done this according to SE rules).

The following lines :

import wx
from traitsui.api import View, Item, Group, HSplit, Handler, EnumEditor, FileEditor

cause the following error :

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-ad1e3b62165b> in <module>()
----> 1 from traitsui.api import View, Item, Group, HSplit, Handler, EnumEditor, FileEditor

/usr/local/lib/python2.7/dist-packages/traitsui/api.py in <module>()
     34 
     35 try:
---> 36     from .editors.api import ArrayEditor
     37 except ImportError:
     38     # ArrayEditor depends on numpy, so ignore if numpy is not present.

/usr/local/lib/python2.7/dist-packages/traitsui/editors/__init__.py in <module>()
     21 
     22 try:
---> 23     from .api import ArrayEditor
     24 except ImportError:
     25     pass

/usr/local/lib/python2.7/dist-packages/traitsui/editors/api.py in <module>()
     22 from .button_editor import ButtonEditor
     23 from .check_list_editor import CheckListEditor
---> 24 from .code_editor import CodeEditor
     25 from .color_editor import ColorEditor
     26 from .compound_editor import CompoundEditor

/usr/local/lib/python2.7/dist-packages/traitsui/editors/code_editor.py in <module>()
     34 #-------------------------------------------------------------------------------
     35 
---> 36 class ToolkitEditorFactory ( EditorFactory ):
     37     """ Editor factory for code editors.
     38     """

/usr/local/lib/python2.7/dist-packages/traitsui/editors/code_editor.py in ToolkitEditorFactory()
     46 
     47     # Background color for marking lines
---> 48     mark_color = Color( 0xECE9D8 )
     49 
     50     # Object trait containing the currently selected line (optional)

/usr/local/lib/python2.7/dist-packages/traits/traits.pyc in __call__(self, *args, **metadata)
    520 
    521     def __call__ ( self, *args, **metadata ):
--> 522         return self.maker_function( *args, **metadata )
    523 
    524 class TraitImportError ( TraitFactory ):

/usr/local/lib/python2.7/dist-packages/traits/traits.pyc in Color(*args, **metadata)
   1234     from traitsui.toolkit_traits import ColorTrait
   1235 
-> 1236     return ColorTrait( *args, **metadata )
   1237 
   1238 Color = TraitFactory( Color )

/usr/local/lib/python2.7/dist-packages/traitsui/toolkit_traits.pyc in ColorTrait(*args, **traits)
      5 
      6 def ColorTrait ( *args, **traits ):
----> 7     return toolkit().color_trait( *args, **traits )
      8 
      9 def RGBColorTrait ( *args, **traits ):

/usr/local/lib/python2.7/dist-packages/traitsui/toolkit.pyc in toolkit(*toolkits)
    150     if ETSConfig.toolkit:
    151         # If a toolkit has already been set for ETSConfig, then use it:
--> 152         _toolkit = _import_toolkit(ETSConfig.toolkit)
    153         return _toolkit
    154     else:

/usr/local/lib/python2.7/dist-packages/traitsui/toolkit.pyc in _import_toolkit(name)
     81 
     82 def _import_toolkit ( name ):
---> 83     return __import__( name, globals=globals(), level=1 ).toolkit
     84 
     85 

/usr/local/lib/python2.7/dist-packages/traitsui/wx/__init__.py in <module>()
     24 #-------------------------------------------------------------------------------
     25 
---> 26 import toolkit
     27 
     28 # Reference to the GUIToolkit object for wxPython

/usr/local/lib/python2.7/dist-packages/traitsui/wx/toolkit.py in <module>()
     56     import PythonDropTarget
     57 
---> 58 from constants \
     59     import WindowColor, screen_dx, screen_dy
     60 

/usr/local/lib/python2.7/dist-packages/traitsui/wx/constants.py in <module>()
     59     BorderedGroupColor = wx.Colour( 224, 224, 224 )
     60 else:
---> 61     WindowColor = wx.SystemSettings_GetColour( wx.SYS_COLOUR_MENUBAR )
     62 
     63 # Standard width of an image bitmap

AttributeError: 'module' object has no attribute 'SystemSettings_GetColour'

I suspect incompatibility between updated packages, so here are the versions:

Python 2.7.12 on Ubuntu 16.04

traits==4.6.0
traitsui==5.1.0
wxPython==4.0.0b2
wxPython-common==3.0.2.0

AND I set (in terminal, before entering python):

export ETS_TOOLKIT=wx

The problem is the removal of the "_" version of the static methods, and traitsui hasn't been fully migrated yet. See https://docs.wxpython.org/MigrationGuide.html#static-methods .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM