как подавить дальнейшую обработку события matplotlib

#python #matplotlib

#python #matplotlib

Вопрос:

Я создаю интерактивное графическое приложение с matplotlib. Я хочу, чтобы он хорошо сочетался с существующими функциями «панорамирования» и «масштабирования» графического интерфейса matplotlib по умолчанию, но я также хочу затмить некоторые нажатия клавиш. Моя проблема в том, что я не знаю, как подавить ответ GUI по умолчанию на эти нажатия клавиш. Например, графический интерфейс отвечает на клавишу обратного пробела, отступая на одно представление в истории: я хочу заменить это поведение своим собственным пользовательским поведением:

 def KeyUp(event):

    if event.key.lower() == 'backspace':
        RespondToBackspace()
        PreventAnybodyElseRespondingToBackspace()  # HOW??

import matplotlib.pyplot as plt
cid = plt.gcf().canvas.mpl_connect( 'key_release_event', KeyUp )
  

Я не могу найти никакой документации по отмене или подавлению обработки событий и исчерпал творческий потенциал в своих поисковых запросах. Умозрительно, думая, что этот механизм будет работать так же, как и в некоторых других наборах инструментов, я попытался вернуть либо True или False из обратного вызова, но безрезультатно (т. Е. Поведение «шаг назад на один просмотр» по-прежнему происходит вместе с моим пользовательским ответом, когда я нажимаю backspace).

Возможно ли это?

Комментарии:

1. измените rcpams['keymap.back'] на не включать 'backspace' . Возвращаемые значения игнорируются в cbook.CallbackRegistry.process (что и выполняет отправку события.

2. Кроме того, обратные вызовы хранятся в словаре, поэтому порядок обработки не гарантируется.

Ответ №1:

Из комментариев Такасвелла выше:

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

Решение состоит в том, чтобы изменить matplotlib.rcParams['keymap.back'] так, чтобы оно не включало 'backspace' .