Сохранить порядок в нескольких выбранных ipywidgets - PullRequest
2 голосов
/ 08 марта 2020

У меня есть SelectMultiple IpyWidgets.

import ipywidgets as widgets
d = widgets.SelectMultiple(
options=['Apples', 'Oranges', 'Pears',"Mango"],
#rows=10,
description='Fruits',
disabled=False
)

OP:

print (list(d.value))
['Apples', 'Mango']

Независимо от выбранного порядка, порядок в OP всегда совпадает с порядком в списке списка вариантов. Например, даже если I select Mango first and then Apple, ОП все еще остается неизменным.

1 Ответ

0 голосов
/ 18 марта 2020

Вам нужен обходной путь, чтобы поймать порядок кликов, аналогично описанному здесь :

import ipywidgets as widgets
d = widgets.SelectMultiple(
options=['Apples', 'Oranges', 'Pears',"Mango"],
description='Fruits',
disabled=False
)

foo = []

def on_change(change):
    if change['type'] == 'change' and change['name'] == 'value':
        for elem in change['new']:
            if elem not in foo:
                foo.append(elem)
        for elem in foo:
            if elem not in change['new']:
                foo.remove(elem)


d.observe(on_change)
d

foo - просто заполнитель. Теперь, если вы нажмете «Man go», а затем «Apple», вы получите:

print('values:', d.value)  # values: ('Apples', 'Mango')
print('click_order:', foo) # click_order: ['Mango', 'Apples']
...