pyqtgraph удалить сохраняющуюся легенду в графическом интерфейсе pyqt4

Я хочу построить несколько элементов в графическом интерфейсе pyQt4 из списка, который пользователь может выбрать для отображения. Они могут делать это столько раз, сколько захотят. Каждый раз, когда они отображают новые данные, легенда сохраняется, даже если графики не сохраняются. Мой код:

self.DataPlotter.setLabels(left=("magnitude"),bottom=(str(x_ind)))
title = str(y_ind) + " vs " + str(x_ind)
self.DataPlotter.setTitle(title)
self.DataPlotter.addLegend()

for y,c in zip(y_ind,range(len(y_ind))):
    self.DataPlotter.plot(self.df[x_ind].tolist(),self.df[y].tolist(), name=y, pen=(c,4))

Как мне уничтожать старую легенду каждый раз?


person laserpython    schedule 14.03.2017    source источник


Ответы (1)


Я нашел решение здесь: https://groups.google.com/forum/#!topic/pyqtgraph/DdWyB1ljQdw

Мне нужно было добавить это (не уверен, что try/except необходим):

    try:
        self.legend.scene().removeItem(self.legend)
    except Exception as e:
        print e

Окончательный код выглядит так:

        self.DataPlotter.setLabels(left=("magnitude"),bottom=(str(self.x_ind)))
        title = str(self.y_ind) + " vs " + str(self.x_ind)
        self.DataPlotter.setTitle(title)
        try:
            self.legend.scene().removeItem(self.legend)
        except Exception as e:
            print e
        self.legend = self.DataPlotter.addLegend()
        for y,c in zip(y_ind,range(len(y_ind))):
           self.DataPlotter.plot(self.df[x_ind].tolist(),self.df[y].tolist(), name=y, pen=(c,4))
person laserpython    schedule 14.03.2017