Установить логический статус 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
иначе.