以下代码不起作用:
from traits.api import HasTraits, Enum
class A(HasTraits):
enum = Enum(1,2,3)
class B(A):
def __init__(self):
self.trait('enum').default_value = ['one','two','three']
b = B()
b.configure_traits()
而不是在下拉列表中选择['一个'两个'三个'],它仍然是[1,2] ,3]。有没有办法在声明一次后以任何方式修改枚举内容?
答案 0 :(得分:3)
如果您想从enum
继承B
时更改A
特征的值,您可以像这样重新定义特征:
class B(A):
enum = Enum(['one', 'two', 'three'])
如果您希望能够动态更改Enum
中的值,Enum
构造函数将使用values
参数,您可以传递包含序列的另一个特征的名称比如定义值的List
特征,如下所示,然后以您想要的任何方式更改该列表中的值或整个序列:
from traits.api import Enum, HasTraits, List
class A(HasTraits):
values = List([1, 2, 3])
enum = Enum(values='values')
a = A()
a.configure_traits()