如何更改枚举可能的值

时间:2016-07-09 20:55:37

标签: traits enthought

以下代码不起作用:

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]。有没有办法在声明一次后以任何方式修改枚举内容?

1 个答案:

答案 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()