Matplotlib подключается к событиям кнопки save_figure - PullRequest
0 голосов
/ 01 марта 2019

Кто-нибудь знает, как получить события кнопки «сохранить рисунок» из рисунка matplotlib?

Мне нужны события, чтобы вызывать некоторые из моих функций при нажатии этой кнопки.

import matplotlib.pyplot as plt
from matplotlib.backend_bases import NavigationToolbar2

save_figure = NavigationToolbar2.save_figure

def new_save(self, *args, **kwargs):
  print( 'save_event')
  # save_figure(self, *args, **kwargs)

NavigationToolbar2.save_figure = new_save


fig = plt.figure()
plt.text(0.35, 0.5, 'Hello world!', dict(size=30))
plt.show()

Но если я нажму save figure, это не вызовет мою функцию new_save

1 Ответ

0 голосов
/ 01 марта 2019

matplotlib.backend_bases.NavigationToolbar2 не реализует a save_figure метод.Этот метод реализован в каждом из бэкэндов специально.Например, для бэкэнда Qt5Agg это здесь .Следовательно, вам необходимо обезопасить соответствующий метод используемого бэкэнда.Для бэкэнда Qt5Agg это может выглядеть так:

import matplotlib
matplotlib.use("Qt5Agg")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5 import NavigationToolbar2QT

save_figure = NavigationToolbar2QT.save_figure

def new_save(self, *args, **kwargs):
  print('save_event')
  save_figure(self, *args, **kwargs)

NavigationToolbar2QT.save_figure = new_save

fig = plt.figure()
plt.text(0.35, 0.5, 'Hello world!', dict(size=30))
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...