На самом деле у меня есть эта проблема с использованием 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()
Практически, по отношению к разным фильтрам я получаю разные данные, а не, очевидно, новые графики.
Проблема в том, что для первого графика в графическом интерфейсеУ меня будет напечатана одна единственная координата, но когда я очищаю предыдущий график и показываю другой новый в окне, все события сохраняются и всегда показывают мне одни и те же координаты на экране несколько раз (каждый новый график, который я получаю,также новое событие будет отображаться на экране).
Я пытался отключить «фактическое» событие после подключения, но при этом я не могу видеть какие-либо координаты.
Что я делаю не так?
Заранее спасибо.