Thank you Patrick, that looks very helpful. I'll integrate it into my 
application and let you know how I get on
Steve


> On 19 February 2020 at 06:07 Patrick <[email protected]> wrote:
> 
>     A working example, hopefully should help you out:
> 
>     #!/usr/bin/env python3
> 
>     import numpy as np
>     from PyQt5 import QtWidgets
>     import pyqtgraph as pg
> 
>     #!/usr/bin/env python3
> 
>     import numpy as np
>     from PyQt5 import QtWidgets
>     import pyqtgraph as pg
>     class TestImage ( QtWidgets . QMainWindow ):
> 
>         def __init__ ( self ):
>             super (). __init__ ()
> 
>             # Basic UI layout
>             self . statusbar = QtWidgets . QStatusBar ( self )
>             self . setStatusBar ( self . statusbar )
>             self . glw = pg . GraphicsLayoutWidget ()
>             self . setCentralWidget ( self . glw )
> 
>             # Make image plot
>             self . p1 = self . glw . addPlot ()
>             self . p1 . getViewBox (). setAspectLocked ()
>             # Draw axes and ticks above image/data
>             [ self . p1 . getAxis ( ax ). setZValue ( 10 ) for ax in self . 
> p1 . axes ]
>             self . data = np . random . rand ( 120 , 100 )
>             self . img = pg . ImageItem ( self . data )
>             self . p1 . addItem ( self . img )
>             # Centre axis ticks on pixel
>             self . img . setPos (- 0.5 , - 0.5 )
> 
>             # Swap commented lines to choose between hover or click events
>             self . p1 . scene (). sigMouseMoved . connect ( self . 
> mouseMovedEvent )
>             #self.p1.scene().sigMouseClicked.connect(self.mouseClickedEvent)
> 
>         def mouseClickedEvent ( self , event ):
>             self . mouseMovedEvent ( event . pos ())
> 
>         def mouseMovedEvent ( self , pos ):
>             # Check if event is inside image, and convert from screen/pixels 
> to image xy indicies
>             if self . p1 . sceneBoundingRect (). contains ( pos ):
>                 mousePoint = self . p1 . getViewBox (). mapSceneToView ( pos )
>                 x_i = round ( mousePoint . x ())
>                 y_i = round ( mousePoint . y ())
>                 if x_i > 0 and x_i < self . data . shape [ 0 ] and y_i > 0 
> and y_i < self . data . shape [ 1 ]:
>                     self . statusbar . showMessage ( "({}, {}) = {:0.2f}" . 
> format ( x_i , y_i , self . data [ x_i , y_i ]))
>                     return
>             self . statusbar . clearMessage ()
> 
>     def main ():
>         import sys
>         app = QtWidgets . QApplication ( sys . argv )
>         mainwindow = TestImage ()
>         mainwindow . show ()
>         sys . exit ( app . exec_ ())
> 
>     if __name__ == '__main__' :
>         main ()
> 
> 
>     Patrick
> 
>     On Wednesday, 19 February 2020 00:08:21 UTC+10:30, Stephen Shillitoe 
> wrote:
> 
>         > >         I've tried to adapt the crosshair example to my code 
> without success - I cannot get the mouse clicked event to fire.  I think I 
> must be missing something basic.  Here is the code I have tried.  I am new to 
> pyqtgraph, so any suggestions would be gratefully received.
> > 
> >         imageViewer = pg.GraphicsLayoutWidget()
> >         imageViewer.setMouseTracking( True)
> >         viewBox = imageViewer.addViewBox()
> >         imageViewer.scene(). sigMouseClicked.connect(self. getPixel)
> >         #also tried, without success
> >         #viewBox.proxy = pg.SignalProxy(viewBox.scene() .sigMouseClicked, 
> > rateLimit=60, slot=self.getPixel)
> > 
> >         def getPixel(self, event):
> >                 print('getPixel')
> >                 print (str(event.pos().x()),str( event.pos().y()))
> >                 event.accept()
> > 
> > 
> >         On Monday, February 17, 2020 at 3:19:11 PM UTC, Stephen Shillitoe 
> > wrote:
> > 
> >             > > > 
> > > 
> > >             I have built a PyQt5, Python 3.7 windows application that 
> > > uses PyQtGraph to view monochrome (greyscale) Magnetic Resonance DICOM 
> > > images. As I move the mouse pointer over the image, I would like to 
> > > display the value of the pixel under the pointer on the window. There is 
> > > no obvious (to me) functionality in PyQtGraph to do this. I would be very 
> > > grateful for any suggestions by more experienced developers of how to do 
> > > this. Here is an edited code segment showing how I display the image 
> > > (pixelArray) in an MDI subwindow.
> > > 
> > > 
> > >              layout = QVBoxLayout()
> > >              widget = QWidget()
> > >              widget.setLayout(layout)
> > >              self.subWindow.setWidget(widget) 
> > > 
> > >              imageViewer = pg.GraphicsLayoutWidget()
> > >              viewBox = imageViewer.addViewBox()
> > >              image= pg.ImageItem(border='w')
> > >              viewBox.addItem(image)
> > >              imageView = pg.ImageView(view=viewBox, imageItem=image)
> > >              layout.addWidget(imageView)
> > >              imageView.setImage(pixelArray)
> > > 
> > > 
> > > 
> > >         > > 
> >     > 
>     --
>     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] 
> mailto:[email protected] .
>     To view this discussion on the web visit 
> https://groups.google.com/d/msgid/pyqtgraph/ab245d06-cab5-463d-bcf8-4dab3cadc8a8%40googlegroups.com
>  
> https://groups.google.com/d/msgid/pyqtgraph/ab245d06-cab5-463d-bcf8-4dab3cadc8a8%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/928645200.2548844.1582100063886%40mail2.virginmedia.com.

Reply via email to