TraitsUI CheckListEditor更改值的大小写

时间:2014-05-14 08:59:58

标签: python enthought traits traitsui

我正在使用CheckListEditor让用户选择可用选项的子集。将样式设置为“自定义”后,它会显示一个带有标签的复选框列表。这就是我想要的。但是,一个问题是,文本内容会在某些情况下显示更改的情况 - 我很困惑为什么会发生这种情况。

例如,如果文字为".state.Last",则会显示为".state.last"

任何人都知道为什么会发生这种情况,以及是否有解决此问题的方法。

感谢。

1 个答案:

答案 0 :(得分:3)

默认情况下,编辑器在文本上调用字符串方法capitalize。我不知道为什么;也许作者认为这有助于在UI中强制执行一致的风格。

您可以使用format_func的{​​{1}}参数覆盖此行为。这是一个例子。 (我还使用了CheckListEditor的{​​{1}}参数来覆盖编辑器标签的大小写。)

label

或者,您可以将Item作为元组列表。每个元组的格式为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是UI中显示的字符串,(obj, label)是添加到列表中的对象。使用此表单时,标签在UI中保持不变。例如,

label