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.
