I'm running into an issue where when I remove the the scatterPlotItem from 
GLViewWidget, it removes the grids from the view as well.

My code right now is way too long to post all of it but basically:

plotWidget = gl.GLViewWidget()


xgrid = gl.GLGridItem()
ygrid = gl.GLGridItem()
zgrid = gl.GLGridItem()


plotWidget.addItem(xgrid)
plotWidget.addItem(ygrid)
plotWidget.addItem(zgrid)


... create multiple glScatterPlotItems
with different pos, size, and color

plotList = [glScatterPlotItem1, glScatterPlotItem2,...]
# All scatter plots are added to the plot initially
for i in range(0, len(plotList)):
    plotWidget.addItem(self.plotDic[k])


...depending on user input in MainWindow

for i in range(0, len(plotList)): 
    # This part is to remove all ScatterPlotItems from the 
    # widget so only the selected item will be visible. 
    # Because code does not know which one is added and which one is not. 
    # If there is a better way, please let me know
    try:
        plotWidget.removeItem(plotList[i])
        print "removed: ", i, plotList[i] # to make sure I'm only removing 
scatter plots

    except ValueError:
        pass
   
for i in range(0, len(plotList)):   
    if i == userInput: # only add the one that user selected
            print "added: ", i, plotList[i]
            plotWidget.addItem(plotList[i])

and assuming that there are only two GLScatterPlots are made at some point 
and I run the script, it first adds both plots with the grids so no issue 
there.
However, when the user selects "1" as their input, the Grid Items (all 
three x, y, and z) are also removed along with "0" and only the scatter 
plot for "1" remains in the widget/ I verified that the only items being 
removed are the scatter plots with the print statements shown below:

# User first selects 0 which removes both 0 and 1 that were added initially 
then adds 0 again
removed:  1 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem 
object at 0x1136603e0>
removed:  0 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem 
object at 0x113672808> 
added:  0 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem object 
at 0x113672808> 

# User then selects 1 which removes 0 which is already in the widget then 
adds 1
# However when 0 is removed, the grids are removed as well when the only 
thing removed is the scatter plot
removed:  0 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem 
object at 0x113672808> 
added:  1 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem object 
at 0x1136603e0>

# User then selects 0 again which removes 1 which was the only that was in 
the grid widget
# However now with 0, the grids are now back. This attitude repeats. 0 and 
grid go away together. 

removed:  1 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem 
object at 0x10eea83e0>

added:  0 <pyqtgraph.opengl.items.GLScatterPlotItem.GLScatterPlotItem object 
at 0x10eeba808>


It does not matter whether the user selects 1 first or 0 first. I'm 
obviously only removing the GLScatterPlotItems according to the print 
statements but it seems that the first GLScatterPlot has some how fused 
itself with the Grid Items as well. Is it an error on my end?



-- 
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/c85928a3-32c7-4cfd-8b42-e3192e27a821%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to