def displayMetaDataSubWindow(self, tableTitle, dataset): """ Creates a subwindow that displays a DICOM image's metadata. """ try: logger.info('ViewMetaData.displayMetaDataSubWindow called.') title = "DICOM Image Metadata" widget = QWidget() widget.setLayout(QVBoxLayout()) metaDataSubWindow = QMdiSubWindow(self) metaDataSubWindow.setAttribute(Qt.WA_DeleteOnClose) metaDataSubWindow.setWidget(widget) metaDataSubWindow.setObjectName("metaData_Window") metaDataSubWindow.setWindowTitle(title) height, width = self.getMDIAreaDimensions() metaDataSubWindow.setGeometry(width * 0.4,0,width*0.6,height) lblImageName = QLabel('<H4>' + tableTitle + '</H4>') widget.layout().addWidget(lblImageName) DICOM_Metadata_Table_View = buildTableView(self, dataset) widget.layout().addWidget(DICOM_Metadata_Table_View) self.mdiArea.addSubWindow(metaDataSubWindow) metaDataSubWindow.show() except Exception as e: print('Error in : ViewMetaData.displayMetaDataSubWindow' + str(e)) logger.error('Error in : ViewMetaData.displayMetaDataSubWindow' + str(e))
def setUpGraphicsViewSubWindow(self): """ This function creates a subwindow with a vertical layout & a missing image label. Input Parameters **************** self - an object reference to the WEASEL interface. Output Parameters ***************** layout - PyQt5 QVBoxLayout vertical layout box lblImageMissing - Label displaying the text 'Missing Image'. Hidden until WEASEL tries to display a missing image subWindow - An QMdiSubWindow subwindow """ try: logger.info("DisplayImageDrawRIO.setUpGraphicsViewSubWindow called") subWindow = QMdiSubWindow(self) subWindow.setObjectName = 'image_viewer' subWindow.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint) height, width = self.getMDIAreaDimensions() subWindow.setGeometry(0, 0, width * 0.6, height) self.mdiArea.addSubWindow(subWindow) layout = QVBoxLayout() widget = QWidget() widget.setLayout(layout) subWindow.setWidget(widget) lblImageMissing = QLabel("<h4>Image Missing</h4>") lblImageMissing.hide() layout.addWidget(lblImageMissing) hbox = QHBoxLayout() hbox.setContentsMargins(0, 0, 0, 0) layout.addLayout(hbox) subWindow.show() return hbox, layout, lblImageMissing, subWindow except Exception as e: print('Error in DisplayImageDrawRIO.setUpGraphicsViewSubWindow: ' + str(e)) logger.error( 'Error in DisplayImageDrawRIO.setUpGraphicsViewSubWindow: ' + str(e))
def get_data(self, s): if isinstance(s, QMdiSubWindow) and str( s.objectName()) in self.opened_wd_names: sub = self.mdi.currentSubWindow() self.data_dict = ut.ibw2dict(self.current_dir + '/' + str(s.objectName())) elif isinstance(s, QListWidgetItem): file_name = s.text() self.opened_wd_names.append(file_name) MDIWindow.count = MDIWindow.count + 1 sub = QMdiSubWindow() sub.resize(550, 550) sub.setWindowTitle(file_name) sub.setObjectName(file_name) self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name) else: print(isinstance(s, QMdiSubWindow), isinstance(s, QListWidgetItem)) print(type(s)) return e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0] a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0] e_rg = self.data_dict['E_axis'][-1] - self.data_dict['E_axis'][0] a_rg = self.data_dict['A_axis'][-1] - self.data_dict['A_axis'][0] e_str = self.data_dict['E_axis'][0] a_str = self.data_dict['A_axis'][0] e_end = self.data_dict['E_axis'][-1] a_end = self.data_dict['A_axis'][-1] print(e_str, a_str) print(e_end, a_end) print(e_rg, a_rg) print(e_sc, a_sc) gr_v = pg.GraphicsView() l = pg.GraphicsLayout() gr_v.setCentralWidget(l) sub.setWidget(gr_v) self.mdi.addSubWindow(sub) sub.show() p1 = l.addPlot(x=[1, 2], y=[1, 2], name="Plot1", title="EDC", pen="r", row=0, col=0) # label1 = pg.LabelItem(justify='right') # p1.addItem(label1) plt_i = pg.PlotItem(labels={ 'left': ('slits', 'degrees'), 'bottom': ('Kin. Energy', 'eV') }) plt_i.setRange(xRange=[e_str, e_end], yRange=[a_str, a_end], update=True, padding=0) vb = plt_i.getViewBox() vb.setLimits(xMin=e_str, xMax=e_end, yMin=a_str, yMax=a_end) vb.setMouseMode(vb.RectMode) l.addItem(plt_i, row=1, col=0) img_i = pg.ImageItem(self.data_dict['data'], border=None) qrect = vb.viewRect() img_i.setRect(qrect) vb.addItem(img_i) vb.autoRange() # vb.invertX() vb.invertY() hist = pg.HistogramLUTItem(image=img_i) l.addItem(hist, row=0, col=1) p2 = l.addPlot(x=[1, 2], y=[2, 1], name="Plot2", title="MDC", pen="g", row=1, col=1) # label2 = pg.LabelItem(justify='left') # plt_i.addItem(label2) # cross hair vLine = pg.InfiniteLine(angle=90, movable=False) hLine = pg.InfiniteLine(angle=0, movable=False) p1.addItem(vLine, ignoreBounds=False) p1.addItem(hLine, ignoreBounds=False) vb1 = p1.vb pcv = plt_i.addLine(x=e_end, pen='r') pch = plt_i.addLine(y=a_str, pen='r') # lROI = pg.ROI(((e_str+e_end)/2,a_str), size=(5*e_sc,a_rg)) # vb.addItem(lROI) # slice, coor = lROI.getArrayRegion(self.data_dict['data'], img_i ,returnMappedCoords = True) # print('slice') # sl_sum=np.sum(slice, axis=0) # print(sl_sum[0:10]) # print(type(slice), slice.shape) # print(type(coor), coor.shape) # print(coor[1,0,0:10]) # p2.invertY() # p2.setYLink(plt_i) # p2.plot(y=coor[1,0,:], x=sl_sum) def onMouseMoved(point): p = vb.mapSceneToView(point) pcv.setValue(p.x()) pch.setValue(p.y()) # print(p.x(), p.y()) hROI = pg.ROI((e_str, p.y()), size=(e_rg, 5 * a_sc)) vb.addItem(hROI) hROI.hide() sl, co = hROI.getArrayRegion(self.data_dict['data'], img_i, returnMappedCoords=True) sl_sum = np.sum(sl, axis=1) p1.setXLink(plt_i) p1.plot(x=co[0, :, 0], y=sl_sum, clear=True) vROI = pg.ROI((p.x(), a_str), size=(5 * e_sc, a_rg)) vb.addItem(vROI) vROI.hide() slc, coo = vROI.getArrayRegion(self.data_dict['data'], img_i, returnMappedCoords=True) sl_sum = np.sum(slc, axis=0) p2.invertY() p2.setYLink(plt_i) p2.plot(y=coo[1, 0, :], x=sl_sum, clear=True) # label2.setText("{}-{}".format(p.x(), p.y())) img_i.scene().sigMouseMoved.connect(onMouseMoved)