Hi Ogi,

if I understand well you need to make some modification to the code.
However I think that in my particular case I can still get rid of the 
problem using the modification of the code reported below. It seems that it 
works as well for pg.Point or QtCore.QPointF

def roi_changed(roi):
    
    Handles=roi.getLocalHandlePositions() # Get list of handles   
    for h in Handles:
        position=h[1]
        print(f'point = ({position.x():.4f},{position.y():.4f})')
#-------------------------------------------------------------------
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)

roi=pg.PolyLineROI([[5.0,2], [6.0, 2], [6.0, 5]], pen=(6,9), closed=False)
plot.addItem(roi)

roi.sigRegionChangeFinished.connect(lambda roi: roi_changed(roi))

print('Print Handles position as they are created')
Handles=roi.getLocalHandlePositions() # Get list of handles
for h in Handles: # Print handles position
    position=h[1]
    print(f'point = ({position.x():.4f},{position.y():.4f})')

print('... Then when I move one handle...')

pg.exec()

Do you agree?

thanks 
Salvatore

Il giorno giovedì 9 dicembre 2021 alle 21:42:05 UTC+1 [email protected] 
ha scritto:

> Hi Salvatore,
>
> This one took me a bit to debug!  Pro-tip, if using breakpoint() use the 
> pyside bindings, not the PyQt ones.
>
> Issue is in the ROI.movePoint; or more specifically 
> QGraphicsItem.mapFromScene which takes a pg.Point as input, but returns a 
> QtCore.QPointF; easiest fix would be to modify the method such that 
> `h['pos'] = Point(newPos)` in the movePoint method of the ROI class.
>
>         elif h['type'] == 'f':
>             newPos = self.mapFromParent(p1)
>             h['item'].setPos(newPos)
>             h['pos'] = Point(newPos)
>             self.freeHandleMoved = True
>
> At a glance, I'm not sure if there are some other code-paths that would 
> suffer a similar issue.
>
> On Thu, Dec 9, 2021 at 11:39 AM Salvatore Lorusso <[email protected]> 
> wrote:
>
>> Hi all,
>>
>> I appreciate if someone has an answer to the following issue.
>> Please consider the following code:
>>
>> def roi_changed(roi):
>>     
>>     Handles=roi.getLocalHandlePositions() # Get list of handles   
>>     for h in Handles:
>>         position=h[1]
>>         print(position)
>>         print('try to print X position')
>>         print(position[0])
>>
>> #-------------------------------------------------------------------
>> 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)
>>
>> roi=pg.PolyLineROI([[5.0,2], [6.0, 2], [6.0, 5]], pen=(6,9), closed=False)
>> plot.addItem(roi)
>>
>> roi.sigRegionChangeFinished.connect(lambda roi: roi_changed(roi))
>>
>> print('Print Handles position as they are created')
>> Handles=roi.getLocalHandlePositions() # Get list of handles
>> for h in Handles: # Print handles position
>>     position=h[1]
>>     print(position)
>>
>> print('... Then when I move one handle...')
>>
>> pg.exec()
>>
>> Initially the code will print the positions of the three handles as 
>> following
>> Point(5.000000, 2.000000)
>> Point(6.000000, 2.000000)
>> Point(6.000000, 5.000000)
>>
>> but when I move one of the handles, so that the "roi_changed" function is 
>> activated by the event, the handle that I move changes its "nature" and 
>> when I print its position I get:
>> PyQt5.QtCore.QPointF(6.5, 2.9)
>> instead of 
>> Point(6.5, 2.9)
>>
>> the problem is that I want to extract the X position and while the
>> position=Point(5,2) is subscriptable, so that position[0]=5
>> I cannot do the same to extract X position from PyQt5.QtCore.QPointF
>>
>> In fact you will see that my code fails 
>>
>> I hope you can help to find a way to extract X position in all the cases
>>
>> thanks
>> 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/e44e0745-8a65-40f1-b6bb-953234d097d8n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/pyqtgraph/e44e0745-8a65-40f1-b6bb-953234d097d8n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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/7ace7c12-7186-42ee-b090-42472b9a7234n%40googlegroups.com.

Reply via email to