使用枚举作为ipywidgets上的选项值

问题描述 投票:0回答:1

我想与ipywidgets Dropdown进行交互,继续创建条形图。条形图的条形可以以不同的方式订购。

我有一个我希望提供的排序类型的枚举作为选项:

class SORT_TYPE(Enum):
    ALPHABETICAL = 1
    ASCENDING = 2
    DESCENDING = 3
    UNSORTED = 4

我有一个下拉小部件,其值使用上面的枚举

ordering_dropdown = widgets.Dropdown(
    options={'Alphabetical': SORT_TYPE.ALPHABETICAL, \
             'Ascending': SORT_TYPE.ASCENDING, \
             'Descending': SORT_TYPE.DESCENDING, \
             'Unsorted': SORT_TYPE.UNSORTED},
    value=SORT_TYPE.ALPHABETICAL,
    description='Ordering: ',
)

但是当我在互动中使用它时

interactive(my_func, p1=p1, p2=p2, ordering=ordering_dropdown)

我明白了

ValueError: <SORT_TYPE.ALPHABETICAL: 1> cannot be transformed to a widget

你知道我做错了什么吗?

提前致谢。

python matplotlib interaction ipywidgets
1个回答
0
投票

回答自己。图中的错误是因为枚举不是固定类型。把枚举改成了

SORT_TYPE={'ALPHABETICAL': 1,\
       'ASCENDING': 2,\
       'DESCENDING': 3,\
       'UNSORTED': 4}

和下拉到

ordering_dropdown = widgets.Dropdown(
       options={'Alphabetical': SORT_TYPE['ALPHABETICAL'], \
                'Ascending': SORT_TYPE['ASCENDING'], \
                'Descending': SORT_TYPE['DESCENDING'], \
                'Unsorted': SORT_TYPE['UNSORTED']},
       value=SORT_TYPE['ALPHABETICAL'],
       description='Ordering: ',
    )

它现在表现得好一些。

© www.soinside.com 2019 - 2024. All rights reserved.