Установить логический статус CheckBox в matplotlib без запуска обратных вызовов?

Есть ли способ установить логический статус CheckButtons в триггере Matplotlib? onclick() обратные вызовы?

Вот мой сценарий:

Я отображаю график с большим количеством трасс (более 50) и хочу дать пользователю возможность отображать их подмножество на основе некоторых фиксированных запросов, которые пользователь выбирает с помощью CheckButton, При каждом нажатии кнопки скрипт получает статус всех присутствующих. CheckButtonчерез get_status(), вычисляет индексы трасс, которые соответствуют выбранным критериям, и обновляет отображение соответствующим образом.

Чтобы облегчить жизнь пользователю, я также хочу иметь кнопки "Выбрать все" и "Очистить все". Лучший способ реализовать их - заставить логическое состояние всех CheckButtons на True или False, не вызывая on_click() обратный вызов, затем установите видимость следов соответственно.

Тем не мение, CheckButton() не имеет set_status() метод https://matplotlib.org/api/widgets_api.html

E сть set_active() метод, но в соответствии с документацией он вызывает обратный вызов, если eventson правда.

Может кто-нибудь дать мне пару советов, как это сделать? Нужно ли устанавливать eventson=False для Wdget, то set_active()=True с последующим eventson=True? Кажется довольно неуклюжим, но я не могу придумать более изящный способ, даже проведя слишком много часов.

Спасибо!

1 ответ

Я знал это, как только я отправляю вопрос, я выясняю ответ. Вот то, что я придумал для всех, кто хочет сделать что-то подобное

    check.eventson = False
    status = check.get_status()
    for i,stat in enumerate(status):
        if ((enable and not stat) or (not enable and stat)): 
            check.set_active(i)
    check.eventson = True

здесь проверка является ссылкой на CheckBox() объект и enable переменная установлена ​​в True если вы хотите включить все флажки, или False иначе.

Другие вопросы по тегам