如何更改枚举可能的值

How to change Enum possible values

以下代码不起作用:

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

下拉列表中没有['one','two','three']的选项,还是[1,2,3]。有没有办法在声明一次后以任何方式修改 Enum 内容?

如果您想在从 A 继承 B 时更改 enum 特征的值,您可以像这样重新定义特征:

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