Hi All,

I have a few questions regarding the closing of (real-time) plots using 
pyqtgraph with Python 2.7 and am hoping for some help.

1. I create two plots which update every second (Please see the code 
below). However, when I close one of the plots (by clicking on the x button 
in the top right corner of the window), the window closes but the 
corresponding timer is still keeps running.  I would like to intercept the 
event triggered when the x button is clicked and stop the timer in the 
event handler. Is there way to do this within my current code (i.e. without 
subclassing 'pg.PlotItem' and then overriding the closeEvent() method). I 
have also dabbled into event filters without much success. 

2. Similar to above, what would be the best way to ensure that the plot 
releases memory when the user clicks the x button. 

3. Lastly, and slightly off-topic, what is the best way to add custom text 
at certain locations on the plot window.

Many thanks for your help.

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
import sys


class DataPlots(object):

    def __init__(self, data, index, title, interval):
        self.title = title
        self.interval = interval
        self.data = data
        self.index = index
        self.win = pg.GraphicsWindow()
        self.win.setWindowTitle(self.title)
        self.p = self.win.addPlot()
        self.curve = self.p.plot(self.data[:self.index], pen='k')

        self.timer = pg.QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(self.interval)

    def update(self):
        print 'Timer for: ' + self.title
        self.index += 1
        self.curve.setData(self.data[:self.index])


if __name__ == '__main__':

    pg.setConfigOption('background', 'w')
    pg.setConfigOption('foreground', 'k')

    pg.mkPen(1)

    x = np.linspace(-np.pi, np.pi, 201)  # generate angle data from -pi to pi
    y1 = np.sin(x)  # generate an array of sin(angle)
    y2 = np.cos(x)  # generate an array of cose(angle)
    i = 2

    myPlot1 = DataPlots(y1, i, 'FirstPlot', 1000)
    myPlot2 = DataPlots(y2, i, 'SecondPlot', 1000)

    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_() 


-- 
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/c445c321-da03-4db7-a3ef-6c5618c694e5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to