python - enthought traits UI, add values dynamically to 'values' trait of CheckListEditor -


how can add 'values' dynamically checklisteditor?
instead of static 'values', have dynamically bclass options attr.

from enthought.traits.api import hastraits, instance, str enthought.traits.ui.api import view, item, checklisteditor  class bclass:     options = ['one', 'two']  class aclass(hastraits):     bclass = instance(bclass)     abc = str     view = view(         item(name='abc', editor=checklisteditor(values=['one', 'two']) ),         style='simple',         ) 

instead of giving checklisteditor list of values, can give name of trait containing values:

from traits.api import hastraits, instance, str, list traitsui.api import view, item, checklisteditor  class bclass(hastraits):     options = list(['one', 'two'])  class aclass(hastraits):     bclass = instance(bclass)     abc = str      traits_view = view(         item(name='abc', editor=checklisteditor(name='object.bclass.options')),     )  b = bclass() = aclass(bclass=b) a.configure_traits() 

in example, 'object.bclass.options' means: traits called options attribute of trait called bclass in context object, i.e., namespace of current object. context necessary when using name of trait in class.

update following poster's comment:

in comment, poster asked happen if bclass not hastraits class, and/or options dictionary.

if bclass not hastraits class, won't able respond changes in dictionary content, this:

from traits.api import hastraits, instance, str traitsui.api import view, item, checklisteditor  class bclass(object):     options = {'one': 1, 'two': 2}  class aclass(hastraits):     bclass = instance(bclass)     abc = str      def default_traits_view(self):         options = self.bclass.options.keys()         view = view(             item(name='abc', editor=checklisteditor(values=options)),         )         return view 

the default_traits_view method called create traitsui view dynamically.

if bclass hastraits class, can better:

from traits.api import hastraits, instance, str, property, dict traitsui.api import view, item, checklisteditor  class bclass(hastraits):     options = dict({'one': 1, 'two': 2})  class aclass(hastraits):     bclass = instance(bclass)     abc = str      options = property(str, depends_on='bclass.options')     def _get_options(self):         return self.bclass.options.keys()      traits_view = view(         item(name='abc', editor=checklisteditor(name='options')),     ) 

in case, view updated whenever content of options dictionary changes.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -