def displayObjectContents(self,d): """ The contents of the dictionary 'd' are displayed in a new QWindow """ self.tree = pg.DataTreeWidget(data=d) self.tree.show() self.tree.setWindowTitle('Data') self.tree.resize(600,600)
def get_fitting_tree(self, rows, max_points=12): xf_list = self.get_xf_list(max_points, rows) result = {} for x in xf_list: result[x.label] = x.get_fitting_info(mode='g2_fitting') tree = pg.DataTreeWidget(data=result) tree.setWindowTitle('fitting summary') tree.resize(1024, 800) return tree
def __init__(self, chart, ctrl): #QtGui.QWidget.__init__(self) dockarea.DockArea.__init__(self) self.chart = chart self.ctrl = ctrl self.hoverItem = None #self.setMinimumWidth(250) #self.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding)) #self.ui = FlowchartTemplate.Ui_Form() #self.ui.setupUi(self) ## build user interface (it was easier to do it here than via developer) self.view = FlowchartGraphicsView.FlowchartGraphicsView(self) self.viewDock = dockarea.Dock('view', size=(1000, 600)) self.viewDock.addWidget(self.view) self.viewDock.hideTitleBar() self.addDock(self.viewDock) self.hoverText = QtGui.QTextEdit() self.hoverText.setReadOnly(True) self.hoverDock = dockarea.Dock('Hover Info', size=(1000, 20)) self.hoverDock.addWidget(self.hoverText) self.addDock(self.hoverDock, 'bottom') self.selInfo = QtGui.QWidget() self.selInfoLayout = QtGui.QGridLayout() self.selInfo.setLayout(self.selInfoLayout) self.selDescLabel = QtGui.QLabel() self.selNameLabel = QtGui.QLabel() self.selDescLabel.setWordWrap(True) self.selectedTree = pg.DataTreeWidget() #self.selectedTree.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) #self.selInfoLayout.addWidget(self.selNameLabel) self.selInfoLayout.addWidget(self.selDescLabel) self.selInfoLayout.addWidget(self.selectedTree) self.selDock = dockarea.Dock('Selected Node', size=(1000, 200)) self.selDock.addWidget(self.selInfo) self.addDock(self.selDock, 'bottom') self._scene = self.view.scene() self._viewBox = self.view.viewBox() #self._scene = QtGui.QGraphicsScene() #self._scene = FlowchartGraphicsView.FlowchartGraphicsScene() #self.view.setScene(self._scene) self.buildMenu() #self.ui.addNodeBtn.mouseReleaseEvent = self.addNodeBtnReleased self._scene.selectionChanged.connect(self.selectionChanged) self._scene.sigMouseHover.connect(self.hoverOver)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.expt = None self.layout = QtGui.QGridLayout() self.setLayout(self.layout) self.info_tree = pg.DataTreeWidget() self.layout.addWidget(self.info_tree, self.layout.rowCount(), 0) self.biocytin_btn = QtGui.QPushButton('biocytin image...') self.biocytin_btn.clicked.connect(self.show_biocytin) self.layout.addWidget(self.biocytin_btn, self.layout.rowCount(), 0)
def get_pg_tree(self): _, data = self.load() for key, val in data.items(): if isinstance(val, np.ndarray): if val.size > 4096: data[key] = 'data size is too large' # suqeeze one-element array if val.size == 1: data[key] = float(val) data['type'] = self.type data['label'] = self.label tree = pg.DataTreeWidget(data=data) tree.setWindowTitle(self.fname) tree.resize(600, 800) return tree
def __init__(self): QtGui.QWidget.__init__(self) self.resize(800, 800) self.layout = QtGui.QGridLayout() self.setLayout(self.layout) self.message_text = QtGui.QTextBrowser() self.message_text.setOpenExternalLinks(True) self.layout.addWidget(self.message_text, 0, 0) self.info_tree = pg.DataTreeWidget() self.info_tree.setColumnHidden(1, True) self.layout.addWidget(self.info_tree, 0, 1) self.submit_btn = QtGui.QPushButton('submit!') self.submit_btn.clicked.connect(self.submit) self.layout.addWidget(self.submit_btn, 1, 1)
def __init__(self, mol, parent): super(TreeWindow, self).__init__(parent) self.setWindowTitle('MolViewer :: Info table :: {:s}'.format( mol.filename)) data = moleculeinfo(mol) tree = pg.DataTreeWidget() tree.setData(data, hideRoot=True) closebutton = QtGui.QPushButton("&Close") closebutton.setFocus() closebutton.clicked.connect(self.close) buttonbox = QtGui.QDialogButtonBox() buttonbox.addButton(closebutton, QtGui.QDialogButtonBox.ActionRole) verticalLayout = QtGui.QVBoxLayout(self) verticalLayout.addWidget(tree) verticalLayout.addWidget(buttonbox)
def setupUi(self): self.dockWidgets = [] self.dtw = pg.DataTreeWidget() self.form = Ui_MainWindow() self.form.setupUi(self) self.addMovableWidget(self.dtw, 'Image Info') self.imgview = pg.ImageView() self.form.tabWidget.addTab(self.imgview, "Image") # self.form.tabWidget.addTab(self.imgview, "Monitor") self.treeImages = CalcTreeWidget() self.tabWidgets = [self.imgview] self.measurementObject = None self.addMovableWidget(self.treeImages, 'Images') self.newItems = CalcTreeWidgetItem(self.treeImages, ['New', ''], kind='folder') self.fromFileItems = CalcTreeWidgetItem(self.treeImages, ['From File', 'f'], kind='folder') self.treeImages.currentItemChanged.connect(self.changeActiveImage) self.form.actionRecalc.triggered.connect(self.treeImages.recalc) self.form.actionAddSumNode.triggered.connect( lambda: self.treeImages.addFunctionNode( lambda a: np.sum(a, 0) / len(a), 'sum')) self.form.actionAddPolarizationNode.triggered.connect( lambda: self.treeImages.addFunctionNode(polarization, 'polarization')) self.form.actionAutoLevel.triggered.connect(self.autoLevel) def sleepAndRaise(): time.sleep(5) raise Exception self.form.actionSleep.triggered.connect(sleepAndRaise) self.form.actionAdd_File.triggered.connect(self.loadImageFromFile) self.form.actionSave.triggered.connect(self.saveImageToFile) self.imgview.setColorMap(cmap) self.console = Console() self.addTabWidget(self.console, 'Measurement')
def __init__(self, title=None): self.pw = pg.GraphicsLayoutWidget() self.pw.addLabel(title) self.in_plt = self.pw.addPlot(row=1, col=0, title='Inhibitory Pulse QC') self.ex_plt = self.pw.addPlot(row=2, col=0, title='Excitatory Pulse QC') self.qc_text = pg.DataTreeWidget() self.qc_text.setHeaderLabels(['QC failures', 'type', 'value']) self.console = pg.console.ConsoleWidget() self.widget = pg.QtGui.QSplitter(pg.QtCore.Qt.Vertical) self.widget.addWidget(self.pw) self.widget.addWidget(self.qc_text) self.widget.addWidget(self.console) self.widget.resize(1000, 900) self.widget.setSizes([800, 200]) self.widget.show() self.trace_color = {True: 'g', False: 'r', None: 'w'}
import pyqtgraph as pg from pyqtgraph.Qt import QtCore, QtGui, QtWidgets import numpy as np app = QtWidgets.QApplication([]) d = { 'list1': [1, 2, 3, 4, 5, 6, { 'nested1': 'aaaaa', 'nested2': 'bbbbb' }, "seven"], 'dict1': { 'x': 1, 'y': 2, 'z': 'three' }, 'array1 (20x20)': np.ones((10, 10)) } tree = pg.DataTreeWidget(data=d) tree.show() tree.setWindowTitle('pyqtgraph example: DataTreeWidget') tree.resize(600, 600) ## Start Qt event loop unless running in interactive mode or using pyside. if __name__ == '__main__': import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtWidgets.QApplication.instance().exec_()
w1l = pg.QtGui.QGridLayout() w1.setLayout(w1l) vsplit.addWidget(w1) # Button for loading .dat file load_btn = pg.QtGui.QPushButton("Load...") w1l.addWidget(load_btn, 0, 0) # Tree for displaying .pul structure tree = pg.QtGui.QTreeWidget() tree.setHeaderLabels(['Node', 'Label']) tree.setColumnWidth(0, 200) w1l.addWidget(tree, 1, 0) # Tree for displaying metadata for selected node data_tree = pg.DataTreeWidget() vsplit.addWidget(data_tree) # Plot for displaying trace data plot = pg.PlotWidget() hsplit.addWidget(plot) # Resize and show window hsplit.setStretchFactor(0, 400) hsplit.setStretchFactor(1, 600) win.resize(1200, 800) win.show() def load_clicked(): # Display a file dialog to select a .dat file
def makeLayout(self): """ Generate the GUI layout """ layout = qg.QGridLayout() # create a grid for subWidgets layout.setSpacing(10) self.setLayout(layout) font = qg.QFont() font.setBold(True) font.setPixelSize(15) # Define items self.importFileBtn = qw.QPushButton('Import File', self) self.importFileBtn.clicked.connect(self.importFile) layout.addWidget(self.importFileBtn, 18, 1, 1, 7) self.saveasCSVBtn = qw.QPushButton('Save as CSV', self) self.saveasCSVBtn.clicked.connect(self.saveasCSV) layout.addWidget(self.saveasCSVBtn, 16, 24, 1, 5) self.saveFigure = qw.QPushButton('Save Figure', self) #self.saveFigure.resize(self.clrButton.sizeHint()) self.saveFigure.clicked.connect(self.nofunctionyet) layout.addWidget(self.saveFigure, 18, 24, 1, 5) self.nameTxtbox = qw.QLabel('Series Name:', self) self.nameTxtbox.setFont(font) layout.addWidget(self.nameTxtbox, 1, 1, 1, 7) self.nameTxtbox = qw.QLineEdit(self) self.nameTxtbox.setPlaceholderText('file name') self.nameTxtbox.editingFinished.connect(self.nofunctionyet) layout.addWidget(self.nameTxtbox, 2, 1, 1, 7) self.metadataTree_name = qw.QLabel('Metadata:', self) # self.metadataTree_name.setFont(font) # layout.addWidget(self.metadataTree_name, 3, 1) self.metadataTree = pg.DataTreeWidget() #self.metadataTree.setHeaderItem() # layout.addWidget(self.metadataTree, 4, 1, 13, 7) self.scanListTree_label = qw.QLabel('Scans:', self) self.scanListTree_label.setFont(font) layout.addWidget(self.scanListTree_label, 3, 1) self.scanListTree = pg.parametertree.ParameterTree() #self.metadataTree.setHeaderItem() layout.addWidget(self.scanListTree, 4, 1, 13, 7) self.plotWidget_name = qw.QLabel('Plot', self) self.plotWidget_name.setFont(font) layout.addWidget(self.plotWidget_name, 1, 9) self.setPlotWidget() layout.addWidget(self.plotWidget, 2, 9, 13, 20) # plot modification buttons self.modifyBox_name = qw.QLabel('Modify', self) layout.addWidget(self.modifyBox_name, 15, 10) self.modifyBox_name.setFont(font) self.flipXcb = qw.QPushButton('Flip x', self) self.flipXcb.clicked.connect(self.flipX) layout.addWidget(self.flipXcb, 16, 10) self.remDCcb = qw.QPushButton('Remove DC', self) self.remDCcb.clicked.connect(self.removeDC) layout.addWidget(self.remDCcb, 17, 10) self.shiftXcb = qw.QPushButton('Set Time Zero', self) self.shiftXcb.clicked.connect(self.setTimeZero) layout.addWidget(self.shiftXcb, 18, 10) self.timeZero = 0 self.shiftTimeZero_input = pg.SpinBox(self) self.shiftTimeZero_input.setMinimumSize(1, 25) # self.shiftTimeZero_input.setValidator(QtGui.QDoubleValidator()) #self.shiftTimeZero_input.textChanged.connect(self.setShiftTimeZero) self.shiftTimeZero_input.valueChanged.connect(self.setTimeZero) layout.addWidget(self.shiftTimeZero_input, 18, 11, 1, 2) # Filter # self.filterBox = QGroupBox('filter', self) # layout.addWidget(self.filterBox, 15, 17, 3, 3) # self.makeFilterBox(layout=layout) # # def makeFilterBox(self, layout): self.filterBox_name = qw.QLabel('Filter', self) # self.filterBox_name.setFont(font) layout.addWidget(self.filterBox_name, 15, 17) self.filterLowPassFreq_name = qw.QLabel('Frequency [THz]', self) layout.addWidget(self.filterLowPassFreq_name, 16, 17) self.filterLowPassFreq = pg.SpinBox(self, dec=True) self.filterLowPassFreq.setMinimumSize(1, 25) #self.filterLowPassFreq.setPlaceholderText('freq') self.filterLowPassFreq.valueChanged.connect(self.applyFilter) layout.addWidget(self.filterLowPassFreq, 16, 18, 1, 3)