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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/ab245d06-cab5-463d-bcf8-4dab3cadc8a8%40googlegroups.com.

Reply via email to