默认情况下,编辑器在文本上调用字符串方法capitalize。我不知道为什么;也许作者认为这将有助于在 UI 中实施一致的样式。
您可以使用CheckListEditor 的format_func 参数覆盖此行为。这是一个例子。 (我还使用了Item 的label 参数来覆盖编辑器标签的大小写。)
from traits.api import HasTraits, List, on_trait_change
from traitsui.api import Item, View, CheckListEditor
class Foo(HasTraits):
stuff = List()
traits_view = View(Item('stuff', style='custom', label='stuff',
editor=CheckListEditor(values=['.state.First', '.state.Last', '.state.Any'],
format_func=lambda x: x)))
@on_trait_change('stuff[]')
def show_stuff(self):
print "stuff =", self.stuff
if __name__ == "__main__":
f = Foo()
f.configure_traits()
或者,您可以将values 作为元组列表提供。每个元组都有(obj, label) 的形式,其中label 是UI 中显示的字符串,obj 是添加到列表中的对象。使用此表单时,标签在 UI 中保持不变。例如,
traits_view = View(Item('stuff', style='custom', label='stuff',
editor=CheckListEditor(values=[('.state.First',)*2,
('.state.Last',)*2,
('.state.Any',)*2])))