将 CheckListEditor 与 List(Str) 以外的其他内容一起使用



CheckListEditors是否能够处理不是字符串但实现__str____repr__的对象列表?

不是这样。 CheckListEditor 假定值是字符串或元组 (元素、字符串)。 它使用对象上的isinstance(basestring)来检查它们是否是字符串,如果不是,则假定它们是(元素,字符串)的元组。

在某些情况下,提供(元素,字符串)的元组并不是特别方便。 主要是当列表中的元素是来自模型对象的特征时,情况确实如此——提供(元素,名称)元组的特征有点尴尬。然而,实现索引是一种方便的解决方法(或残酷的黑客),它愚弄了 CheckListEditor 认为(元素、名称)元组是它得到的。

class Nameable(HasTraits)
  def __repr__(self): return "Some String Representation"
  def __getitem__(self,key):
    if key==0: return self
    elif key==1: return self.__repr__()
    else: raise KeyError

最新更新