Hi Luke,

Many thanks for your reply.

I have tried to overload the closeEvent method but still there doesnt 
appear to be a release of the associated memory (according to Windows Task 
Manager). Please find below a minimal working example:

import pyqtgraph as pg
from PyQt4.QtGui import *
import FirstGUI_ui


class MainWindowGUI(QMainWindow, FirstGUI_ui.Ui_MainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.Trend2.clicked.connect(lambda: self.trendGen())

    def trendGen(self):
        self.Plot1 = MyPlot()
        self.Plot1.show()


class MyPlot(pg.PlotWidget):
    def closeEvent(self, ev):
        self.plotItem.clear()
        self.plotItem = None
        ev.accept()
        print 'Closed!'
        self = None


if __name__ == '__main__':
    app = QApplication([])
    myGUI = MainWindowGUI()
    myGUI.show()
    app.exec_()


Is there any issue in my definition of the closeEvent method?

Many thanks for your help!


On Saturday, 27 August 2016 08:15:27 UTC+1, Luke Campagnola wrote:
>
> Probably the easiest thing to do is just manually clear the plot when the 
> window is closed, by intercepting or overriding its closeEvent  (
> http://doc.qt.io/qt-4.8/qwidget.html#closeEvent). 
>
> Ideally though, after you close the window all references to it would 
> disappear and python would release any items displayed in the plot widget. 
> There are many different reasons the widget or its items might still have 
> references to it, though. I added the pyqtgraph.debug.ObjTracker class 
> specifically to help track down leaked references; you can read the 
> docstrings for that class to get an idea of how to use it. 
>
> On Sun, Aug 21, 2016 at 11:51 AM, <[email protected] <javascript:>> 
> wrote:
>
>> Hi All,
>>
>> My QApplication has a button (on the main window) which, when clicked, 
>> launches a pyqtgraph Plot. The code below shows how the plot is generated 
>> in a class.
>>
>> self.win = pg.GraphicsWindow()
>> self.win.setWindowTitle(self.title)
>> self.p = self.win.addPlot()
>> self.curve = self.p.plot(self.Data1, pen='k')
>>
>>
>> One of the things I have noticed is that when I close the plot window in 
>> my application, the memory is not released. So for example, before the 
>> button is pressed, the Application takes around 20Mb. Once the plot is 
>> launched by clicking the button, this increases to 25Mb. But when I close 
>> the plot (by clicking on the x in the top right corner), the Application 
>> memory footprint stays at 25Mb. Is there any way to release this 5Mb of 
>> memory when the plot is closed (note that I have the line 
>> 'self.curve.clear()' so there is no leak while the plot is being updated in 
>> real-time).
>>
>>
>> Many thanks for reading!
>>
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "pyqtgraph" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/pyqtgraph/e26192b4-7729-4ddc-8891-444fa944d883%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/pyqtgraph/e26192b4-7729-4ddc-8891-444fa944d883%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/d94b95c3-9812-4eec-bbb2-e8ba6dae2f73%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to