#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'
.