Прошлые события не отключаются при закрытии Canvas - Python Matplotlib - PullRequest
0 голосов
/ 12 апреля 2019

На самом деле у меня есть эта проблема с использованием Matplotlib в качестве серверной части координат щелчка мыши для Pyside 2. Canvas.

Я использую этот виджет: класс MatplotLibWidget (QtWidgets.QWidget):

    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        self.canvas = FigureCanvas(Figure())

        vertical_layout = QtWidgets.QVBoxLayout()
        vertical_layout.addWidget(self.canvas)
        vertical_layout.addWidget(NavigationToolbar(self.canvas, self))
        self.canvas.axes = self.canvas.figure.add_subplot(111)
        self.setLayout(vertical_layout)

и этот класс:

class BlablaWidget(MainFrame.Ui_MainWindow, QtWidgets.QWidget):


    def __init__(self, widgetBlabla, matching_fronts, matching_point):

        # I call the Widget Itself from another Module #

        QtWidgets.QWidget.__init__(self)
        self.Blablaplot = widgetBlabla
        if matching_fronts != 99999:
            self.Blabla_func(matching_fronts)


    def Blabla_func(self, matching_fronts):

        # on click event
        def onclick(event):
            print(event)
            ix, iy = round(float(event.xdata), 5), round(float(event.ydata), 5)

            print(ix, iy)
     .....

     .....
     self.Blablaplot.canvas.axes.plot(.....)

     # then i Call the event of mouse clicking
     self.Blablaplot.canvas.mpl_connect('button_press_event', onclick)

     self.Blablaplot.canvas.draw()

Практически, по отношению к разным фильтрам я получаю разные данные, а не, очевидно, новые графики.

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

Я пытался отключить «фактическое» событие после подключения, но при этом я не могу видеть какие-либо координаты.

Что я делаю не так?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...