将CheckListEditor与List(Str)以外的东西一起使用

时间:2013-11-07 16:23:20

标签: python traits enthought traitsui

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

1 个答案:

答案 0 :(得分:0)

不是这样的。 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