Without seeing more complete code, it is difficult to know why your code is not working. Perhaps you are missing the use of self
? E.g. self.myList.append('Item3')
instead of just myList.append('Item3')
?
The following works for me. The display of the list updates as soon as the buttons are pressed.
import random
from traits.api import HasTraits, List, Str, Button
from traitsui.api import ListStrEditor, View, UItem
class Demo(HasTraits):
my_list = List(Str)
add = Button("ADD")
clear = Button("CLEAR")
traits_view = \
View(
UItem('my_list', editor=ListStrEditor(auto_add=False)),
UItem('add'),
UItem('clear'),
)
def _my_list_default(self):
return ['Item1', 'Item2']
def _add_fired(self):
new_item = "Item%d" % random.randint(3, 999)
self.my_list.append(new_item)
def _clear_fired(self):
self.my_list = []
if __name__ == "__main__":
demo = Demo()
demo.configure_traits()
It works with both the wx and qt4+pyside backends. I'm using the Enthought python distribution, EPD 7.3, which has version 4.2.0 of Traits and TraitsUI.
If your code is significantly different, could you add it to the question?