我CheckListEditor
用来让用户选择可用选项的子集。将样式设置为“自定义”时,它会显示一个带有标签的复选框列表。这就是我想要的。但是,一个问题是,在某些情况下,文本内容的大小写会发生变化——我很困惑为什么会发生这种情况。
例如,如果文本是".state.Last"
,它将显示为".state.last"
。
任何人都知道为什么会发生这种情况以及是否有解决此问题的方法。
谢谢。
默认情况下,编辑器capitalize
在文本上调用 string 方法。我不知道为什么;也许作者认为这将有助于在 UI 中强制执行一致的样式。
您可以format_func
使用CheckListEditor
. 这是一个例子。(我还使用了 的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
为元组列表。每个元组都有表单(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])))