Hi,

No problem. You just need to compare the objects to see if they refer to 
the same instance. So the simplest is something like:
if r == rois[0]:
   print("First ROI")

A better example is:

import pyqtgraph as pg

app = pg.mkQApp("Examples")
win = pg.GraphicsLayoutWidget(show=True, size=(800,800), border=True)
win.setWindowTitle('ROI Example')

plot = win.addPlot()
plot.setXRange(0,10)
plot.setYRange(0,10)

rois=[]
rois.append(pg.ROI(pos=[3,5],size=[1,1]))
rois.append(pg.ROI(pos=[7,5],size=[1,1]))

def roi_changed(roi):
    global rois
    try:
        roi_i = rois.index(roi)
        print(f"ROI #{roi_i} at {roi.pos()}")
    except:
        print("Unknown ROI!")

for roi in rois:
    plot.addItem(roi)
    roi.sigRegionChangeFinished.connect(roi_changed)

pg.exec()

On Tuesday, 7 December 2021 at 7:41:51 pm UTC+10:30 [email protected] wrote:

> Hi Patrick and all,
>
> Thanks for the quick answer!
>
> Your modification works, but still it does not answer my doubt: I 
> understood that the function that I pass to "connect" assumes to have as 
> argument the ROI itself, but what you suggest give me back the position of 
> the ROI that I moved... true, however I don't know yet WHICH I moved. 
> Having the print of the position, it simply tells me that ONE of them (but 
> not WHICH of them) has reached that position.
> Is there a way to give some "attribute" to the ROI, like a name or ID, so 
> that the ROI that I moved can pass me back such identifier?
>
> Thanks
> Salvatore
>
> Il giorno martedì 7 dicembre 2021 alle 03:24:53 UTC+1 Patrick ha scritto:
>
>> Hi,
>>
>> I'm pretty sure when the signals are emitted, they also pass a reference 
>> to the ROI which triggered the signal. It's not clear from the 
>> documentation, but can see it in the underlying code for the ROI (
>> https://pyqtgraph.readthedocs.io/en/latest/_modules/pyqtgraph/graphicsItems/ROI.html#ROI.stateChanged).
>>  
>> So try changing the connect() line to something like:
>>
>> roi.sigRegionChangeFinished.connect(lambda r: print(r.pos()))
>>
>> and see if that works.
>>
>> Patrick
>> On Tuesday, 7 December 2021 at 5:47:06 am UTC+10:30 [email protected] 
>> wrote:
>>
>>> Hi all,
>>>
>>> I am a beginner, so I hope not to post too trivial question, but I am 
>>> trying to understand how to do the following: assume I have defined two 
>>> ROIs and I set the event to print "Hi" when I finish to move a ROI.
>>> I am able to print "Hi" when I move ANY of the two ROIs, but how can 
>>> recognize WHICH ROI I moved? Like printing "Hi I moved ROI N. 1" or "Hi I 
>>> moved ROI N. 2" ?
>>>
>>> Here a simple code to explain better my question:
>>>
>>> import pyqtgraph as pg
>>>
>>> app = pg.mkQApp("Examples")
>>> win = pg.GraphicsLayoutWidget(show=True, size=(800,800), border=True)
>>> win.setWindowTitle('ROI Example')
>>>
>>> plot = win.addPlot()
>>> plot.setXRange(0,10)
>>> plot.setYRange(0,10)
>>>
>>> rois=[]
>>> rois.append(pg.ROI(pos=[3,5],size=[1,1]))
>>> rois.append(pg.ROI(pos=[7,5],size=[1,1]))
>>>
>>> for roi in rois:
>>>     plot.addItem(roi)
>>>     roi.sigRegionChangeFinished.connect(lambda: print('Hi'))
>>>
>>> pg.exec()
>>>
>>> Thanks in advance for any help
>>> Salvatore
>>>
>>

-- 
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/3eaa53f6-b8a1-4d9b-b2da-a882ffada850n%40googlegroups.com.

Reply via email to