def __init__(self, pod): super().__init__() MainWindow.console = ConsoleWidget( namespace={ 'pod': pod, 'win': self, }, text='You can use this window to enter Python commands.') MainWindow.console.setWindowTitle('Python interaction') self._ui = Ui_MainWindow() self._ui.setupUi(self) self._ui.startButton.clicked.connect(pod.begin) self._ui.submitButton.clicked.connect(self.submitCommand) pod.connected.connect(self.enable) self._ui.actionSettings.triggered.connect(self.networkDialog) self._ui.actionReconnect.triggered.connect(pod.begin) self._ui.actionConsoleOpen.triggered.connect(self.openConsole) pod.add_listener('*', self.appendNetworkLog) pod.add_listener('v', self.updateVelocityLCD) pod.add_listener('v', self._ui.velocityPlot.datum) pod.add_listener('h', self.updateHeightLCD) pod.add_listener('h', self._ui.heightPlot.datum) pod.add_listener('d', self.updateDistanceLCD) pod.add_listener('d', self._ui.distancePlot.datum) self.command.connect(pod) self.networkUpdate.connect(pod.try_connect) self.timer = QTimer() self.timer.timeout.connect(self._ui.velocityPlot.update) self.timer.timeout.connect(self._ui.heightPlot.update) self.timer.timeout.connect(self._ui.distancePlot.update) self.timer.start(_1s)
def open_console(self): if not self.ui.frameConsole.isVisible(): if hasattr(self, "console"): if self.ui.frameConsole.isVisible() == False: self.ui.frameConsole.setVisible(True) if self.ui.groupBoxPlotting.isVisible() == False: self.ui.actionPlotting.setIcon( QtGui.QIcon("icons/checkmark.png")) self.ui.groupBoxPlotting.setVisible(True) else: self.ui.frameConsole.setLayout(QtWidgets.QVBoxLayout()) self.console = ConsoleWidget( namespace={ "viewer": self, "pd": pd, "np": np, "os": os }, text= "\r This console has access to everything in the namespace of this viewer. " "\n Example: viewer.df refers to the complete dataframe. viewer.df_selection refers to currently selected data " "\n UI widgets are accessible using viewer.ui, like viewer.ui.console for this console." "\n imported libraries: pandas as pd, numpy as np, os ") self.ui.frameConsole.layout().addWidget(self.console) self.ui.frameConsole.setVisible(True) self.ui.groupBoxPlotting.setVisible(True) self.ui.actionConsole.setIcon( QtGui.QIcon("icons/checkmark.png")) else: self.close_console()
def __init__(self, addMenu=True): super(DockWindow, self).__init__() self.dockarea = DockArea() self.setCentralWidget(self.dockarea) self.clipboard = QtGui.QApplication.clipboard() if addMenu: addMenu = self.menuBar().addMenu("&Add Dock") addMenu.addAction( QtGui.QAction("Trace Widget", addMenu, triggered=lambda: self.addWidget(TraceWidget()))) addMenu.addAction( QtGui.QAction("Plot Widget", addMenu, triggered=lambda: self.addWidget(PlotWidget()))) addMenu.addAction( QtGui.QAction("Video Widget", addMenu, triggered=lambda: self.addWidget(VideoWidget()))) addMenu.addAction( QtGui.QAction("Data Widget", addMenu, triggered=lambda: self.addWidget(DataWidget()))) addMenu.addAction( QtGui.QAction("Console Widget", addMenu, triggered=lambda: self.addWidget( ConsoleWidget(namespace=globals())))) if '-no3D' not in sys.argv: addMenu.addAction( QtGui.QAction( "3D Plot Widget", addMenu, triggered=lambda: self.addWidget(Plot3DWidget())))
def __init__(self, name): super().__init__(name, terminals={'title': { 'io': 'in' }}, allowAddInput=True) self.console = ConsoleWidget() self.title = None
def __init__(self): QtWidgets.QMainWindow.__init__(self) centralWidget = QtWidgets.QWidget() self.setCentralWidget(centralWidget) self.running = False self._makeMenuBar() self.imageview = pg.ImageView() self.imageview.view.setAutoPan(False) self.imageview.setMinimumWidth(650) self.console = ConsoleWidget() self.console.setMaximumWidth(400) self.optionsWidget = QtWidgets.QWidget() def errCall(err, a): self.running = False self.imageview.setHistogramRange(0, 2) self.imageview.setLevels(0, 2) np.seterrcall(errCall) np.seterr(over='call') opsL = QtWidgets.QFormLayout() header = QtWidgets.QLabel("Diffusion Simulation") opsL.addRow(header) self.optionsWidget.setMaximumWidth(600) self.optionsWidget.setMinimumWidth(400) self.top_left_label = pg.LabelItem("", justify='right') self.imageview.ui.graphicsView.addItem(self.top_left_label) def timeChanged(m, b): self.top_left_label.setText( "Frame %d, %s ms" % (m, m * self.dtSpin.value() * self.refreshSpin.value())) self.imageview.sigTimeChanged.connect(timeChanged) def viewKeyPress(ev): pg.ViewBox.keyPressEvent(self.imageview.view, ev) self.imageview.view.keyPressEvent = viewKeyPress def saveModel(): puffs = self.puffs model = self.getModel() model.puffs = puffs name = QtWidgets.QInputDialog.getText(self, "Enter a model name", "Enter a model name") if name is not None and len(name) > 0: save_model(name, m) self.startButton = QtWidgets.QPushButton("Start") self.startButton.pressed.connect(self.start) self.saveModelButton = QtWidgets.QPushButton("Save Model") self.saveModelButton.pressed.connect(saveModel) self.progressBar = QtWidgets.QProgressBar() self.progressBar.setRange(0, 100) self.progressBar.setValue(0) buttonBox = QtWidgets.QWidget() buttonLayout = QtWidgets.QGridLayout() buttonLayout.addWidget(self.progressBar, 0, 0, 1, 3) buttonLayout.addWidget(self.saveModelButton, 1, 0) buttonLayout.addWidget(self.startButton, 1, 1) buttonBox.setLayout(buttonLayout) self.imageWidget = self._makeImageWidget() self.modelWidget = self._makeModelWidget() self.puffWidget = self._makePuffWidget() separator = QtWidgets.QWidget() sepLayout = QtWidgets.QHBoxLayout() self.infoLabel = QtWidgets.QLabel() sepLayout.addWidget(self.infoLabel) sepLayout.addStretch() separator.setLayout(sepLayout) def modelSelected(): data = combo.currentData() self.widthSpin.setValue(data.x_max) self.heightSpin.setValue(data.y_max) self.timeSpin.setValue(data.t_max) self.dxSpin.setValue(data.dx) self.dySpin.setValue(data.dy) self.dtSpin.setValue(data.dt) self.dSpin.setValue(data.d) self.sequesterSpin.setValue(data.sequestration) puffs = data.puffs self.pointSpin.setValue(len(puffs)) self.puffTable.setPuffs(puffs) self.refreshSpin.setValue(data.refresh) combo = QtWidgets.QComboBox() combo.currentIndexChanged.connect(modelSelected) for a, b in models.items(): combo.addItem(a, b) opsL.addRow("Saved Models", combo) opsL.addRow(self.imageWidget) opsL.addRow(self.puffWidget) opsL.addRow(self.modelWidget) opsL.addRow(separator) opsL.addRow(buttonBox) self.optionsWidget.setLayout(opsL) self.console.localNamespace.update({ 'self': self, 'set': self.imageview.setImage }) layout = QtWidgets.QGridLayout() layout.addWidget(self.console, 0, 0) layout.addWidget(self.imageview, 0, 1) layout.addWidget(self.optionsWidget, 0, 2) centralWidget.setLayout(layout) self.resize(1850, 600) self.mouse = [0, 0] self.imageview.scene.sigMouseMoved.connect(self.mouseMoved) self.imageview.mousePressEvent = self.mousePressed self.puffs = [] self.scatter = pg.ScatterPlotItem(brush=pg.mkBrush(255, 255, 0)) self.scatter.sigClicked.connect(self.mousePressed) self.imageview.view.addItem(self.scatter) self.imageview.view.setMenuEnabled(False)
def keyPressEvent(self, ev): if ev.text() == 'c': from pyqtgraph.console import ConsoleWidget self.console = ConsoleWidget() self.console.localNamespace['self'] = self self.console.show()
def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setWindowTitle("Stardust Ground Station") self.setWindowIcon(QtGui.QIcon('images/stardust.ico')) self.resize(1000, 600) self.logFile = 'logs/StardustGroundStation' + str( date.today()) + '.txt' with open("config.hjson", "r") as file: config = hjson.load(file) self.sock_rx = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.sock_tx = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.ip_rx = config['UDP_rx']['ip'] self.port_rx = int(config['UDP_rx']['port']) self.ip_tx = config['UDP_tx']['ip'] self.port_tx = int(config['UDP_tx']['port']) self.sock_rx.bind((self.ip_rx, self.port_rx)) self.layout = QVBoxLayout() self.updatableWidgets = [] self.display = Display(structure=config['basics'], units=config['units'], phases=config['phases']) self.layout.addWidget(self.display) self.updatableWidgets.append(self.display) self.tabsTop = QTabWidget() self.layout.addWidget(self.tabsTop) self.sensors = Sensors(structure=config['sensors'], units=config['units']) self.tabsTop.addTab(self.sensors, 'Sensors') self.updatableWidgets.append(self.sensors) self.mechanisms = Mechanisms(structure=config['mechanisms'], statuses=config['statuses']) self.tabsTop.addTab(self.mechanisms, 'Mechanisms') self.updatableWidgets.append(self.mechanisms) self.tabsBottom = QTabWidget() self.layout.addWidget(self.tabsBottom) if config['table']: self.table = Table(header_labels=config['labels'], max_size=config['maxSize']) self.updatableWidgets.append(self.table) self.tabsBottom.addTab(self.table, 'Table') if config['charts']: self.charts = Charts(structure=config['sensors'], units=config['units'], time_index=config['basics'][list( config['basics'].keys())[2]]) self.updatableWidgets.append(self.charts) self.scrollCharts = QScrollArea() self.scrollCharts.setWidgetResizable(True) self.scrollCharts.setWidget(self.charts) self.tabsBottom.addTab(self.scrollCharts, 'Charts') if config['console']: self.console = ConsoleWidget() self.tabsBottom.addTab(ConsoleWidget(), 'Console') if config['buttons']: self.buttons = Buttons( socket=self.sock_tx, udp_ip_tx=self.ip_tx, udp_port_tx=self.port_tx, phases=config['phases'], valves=config['mechanisms']['Valves']['name'], valvestatuses=config['statuses']['valves'], pumps=config['mechanisms']['Pumps']['name']) self.updatableWidgets.append(self.buttons) self.tabsBottom.addTab(self.buttons, 'Function Buttons') self.widget = QWidget() self.widget.setLayout(self.layout) self.setCentralWidget(self.widget) self.testDataRandom = [] self.receiversThreadPool = QThreadPool() self.communicate(ip=config['UDP']['ip'], port=config['UDP']['port'], mechs=config['mechanisms'], status=list(config['basics'])[1]) del config
def __init__(self, actlaser, offlaser, exclaser, cameras, nidaq, pzt, webcam, *args, **kwargs): super().__init__(*args, **kwargs) # self.resize(2400, 1300) self.lasers = [actlaser, offlaser, exclaser] self.cameras = cameras self.nidaq = nidaq self.orcaflash = self.cameras[0] for c in self.cameras: self.changeParameter( lambda: c.setPropertyValue('trigger_polarity', 2)) # 3:DELAYED, 5:GLOBAL RESET self.changeParameter( lambda: c.setPropertyValue('trigger_global_exposure', 5)) # 1: EGDE, 2: LEVEL, 3:SYNCHREADOUT self.changeParameter(lambda: c.setPropertyValue( 'trigger_active', 2)) self.shapes = [(c.getPropertyValue('image_height')[0], c.getPropertyValue('image_width')[0]) for c in self.cameras] self.frameStart = (0, 0) self.currCamIdx = 0 noImage = np.zeros(self.shapes[self.currCamIdx]) self.latest_images = [noImage] * len(self.cameras) self.s = Q_(1, 's') self.lastTime = time.clock() self.fps = None # Actions and menubar # Shortcut only self.liveviewAction = QtGui.QAction(self) self.liveviewAction.setShortcut('Ctrl+Space') QtGui.QShortcut( QtGui.QKeySequence('Ctrl+Space'), self, self.liveviewKey) self.liveviewAction.triggered.connect(self.liveviewKey) self.liveviewAction.setEnabled(False) # Actions in menubar menubar = self.menuBar() fileMenu = menubar.addMenu('&File') self.savePresetAction = QtGui.QAction('Save configuration...', self) self.savePresetAction.setShortcut('Ctrl+S') self.savePresetAction.setStatusTip('Save camera & recording settings') def savePresetFunction(): return guitools.savePreset(self) self.savePresetAction.triggered.connect(savePresetFunction) fileMenu.addAction(self.savePresetAction) fileMenu.addSeparator() self.exportTiffAction = QtGui.QAction('Export HDF5 to Tiff...', self) self.exportTiffAction.setShortcut('Ctrl+E') self.exportTiffAction.setStatusTip('Export HDF5 file to Tiff format') self.exportTiffAction.triggered.connect(guitools.TiffConverterThread) fileMenu.addAction(self.exportTiffAction) self.exportlastAction = QtGui.QAction('Export last recording to Tiff', self) self.exportlastAction.setEnabled(False) self.exportlastAction.setShortcut('Ctrl+L') self.exportlastAction.setStatusTip('Export last recording to Tiff ' + 'format') fileMenu.addAction(self.exportlastAction) fileMenu.addSeparator() exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(QtGui.QApplication.closeAllWindows) fileMenu.addAction(exitAction) self.tree = CamParamTree(self.orcaflash) self.umxpx = self.tree.p.param('Pixel size').value() # Indicator for loading frame shape from a preset setting # Currently not used. self.customFrameLoaded = False self.cropLoaded = False # Camera binning signals. Defines seperate variables for each parameter # and connects the signal emitted when they've been changed to a # function that actually changes the parameters on the camera or other # appropriate action. self.framePar = self.tree.p.param('Image frame') self.binPar = self.framePar.param('Binning') self.binPar.sigValueChanged.connect(self.setBinning) self.FrameMode = self.framePar.param('Mode') self.FrameMode.sigValueChanged.connect(self.updateFrame) self.X0par = self.framePar.param('X0') self.Y0par = self.framePar.param('Y0') self.widthPar = self.framePar.param('Width') self.heightPar = self.framePar.param('Height') self.applyParam = self.framePar.param('Apply') self.NewROIParam = self.framePar.param('New ROI') self.AbortROIParam = self.framePar.param('Abort ROI') # WARNING: This signal is emitted whenever anything about the status of # the parameter changes eg is set writable or not. self.applyParam.sigStateChanged.connect(self.adjustFrame) self.NewROIParam.sigStateChanged.connect(self.updateFrame) self.AbortROIParam.sigStateChanged.connect(self.AbortROI) # Exposition signals timingsPar = self.tree.p.param('Timings') self.EffFRPar = timingsPar.param('Internal frame rate') self.expPar = timingsPar.param('Set exposure time') self.expPar.sigValueChanged.connect(self.setExposure) self.ReadoutPar = timingsPar.param('Readout time') self.RealExpPar = timingsPar.param('Real exposure time') self.FrameInt = timingsPar.param('Internal frame interval') self.RealExpPar.setOpts(decimals=5) self.setExposure() # Set default values # Acquisition signals acquisParam = self.tree.p.param('Acquisition mode') self.trigsourceparam = acquisParam.param('Trigger source') self.trigsourceparam.sigValueChanged.connect(self.changeTriggerSource) # Camera settings widget cameraWidget = QtGui.QFrame() cameraWidget.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Raised) cameraTitle = QtGui.QLabel('<h2><strong>Camera settings</strong></h2>') cameraTitle.setTextFormat(QtCore.Qt.RichText) cameraGrid = QtGui.QGridLayout() cameraWidget.setLayout(cameraGrid) cameraGrid.addWidget(cameraTitle, 0, 0) cameraGrid.addWidget(self.tree, 1, 0) self.presetsMenu = QtGui.QComboBox() self.controlFolder = os.path.split(os.path.realpath(__file__))[0] os.chdir(self.controlFolder) self.presetDir = os.path.join(self.controlFolder, 'presets') if not os.path.exists(self.presetDir): os.makedirs(self.presetDir) for preset in os.listdir(self.presetDir): self.presetsMenu.addItem(preset) self.loadPresetButton = QtGui.QPushButton('Load preset') def loadPresetFunction(): return guitools.loadPreset(self) self.loadPresetButton.pressed.connect(loadPresetFunction) # Liveview functionality self.liveviewButton = QtGui.QPushButton('LIVEVIEW') self.liveviewButton.setStyleSheet("font-size:20px") self.liveviewButton.setCheckable(True) self.liveviewButton.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) # Link button click to funciton liveview self.liveviewButton.clicked.connect(self.liveview) self.liveviewButton.setEnabled(True) self.viewtimer = QtCore.QTimer() self.viewtimer.timeout.connect(self.updateView) self.alignmentON = False # Liveview control buttons self.viewCtrl = QtGui.QWidget() self.viewCtrlLayout = QtGui.QGridLayout() self.viewCtrl.setLayout(self.viewCtrlLayout) self.viewCtrlLayout.addWidget(self.liveviewButton, 0, 0, 1, 2) if len(self.cameras) > 1: self.toggleCamButton = QtGui.QPushButton('Toggle camera') self.toggleCamButton.setStyleSheet("font-size:18px") self.toggleCamButton.clicked.connect(self.toggleCamera) self.camLabel = QtGui.QLabel('Hamamatsu0') self.camLabel.setStyleSheet("font-size:18px") self.viewCtrlLayout.addWidget(self.toggleCamButton, 2, 0) self.viewCtrlLayout.addWidget(self.camLabel, 2, 1) # Status bar info self.fpsBox = QtGui.QLabel() self.fpsBox.setText('0 fps') self.statusBar().addPermanentWidget(self.fpsBox) self.tempStatus = QtGui.QLabel() self.statusBar().addPermanentWidget(self.tempStatus) self.temp = QtGui.QLabel() self.statusBar().addPermanentWidget(self.temp) self.cursorPos = QtGui.QLabel() self.cursorPos.setText('0, 0') self.statusBar().addPermanentWidget(self.cursorPos) self.cursorPosInt = QtGui.QLabel('0 counts', self) self.statusBar().addPermanentWidget(self.cursorPosInt) # Recording settings widget self.recWidget = record.RecordingWidget(self) # Image Widget imageWidget = pg.GraphicsLayoutWidget() self.vb = imageWidget.addViewBox(row=1, col=1) self.vb.setMouseMode(pg.ViewBox.RectMode) self.img = pg.ImageItem() self.img.translate(-0.5, -0.5) self.vb.addItem(self.img) self.vb.setAspectLocked(True) imageWidget.setAspectLocked(True) self.hist = pg.HistogramLUTItem(image=self.img) self.hist.vb.setLimits(yMin=0, yMax=66000) self.cubehelixCM = pg.ColorMap(np.arange(0, 1, 1/256), guitools.cubehelix().astype(int)) self.hist.gradient.setColorMap(self.cubehelixCM) for tick in self.hist.gradient.ticks: tick.hide() imageWidget.addItem(self.hist, row=1, col=2) self.ROI = guitools.ROI((0, 0), self.vb, (0, 0), handlePos=(1, 0), handleCenter=(0, 1), color='y', scaleSnap=True, translateSnap=True) self.ROI.sigRegionChangeFinished.connect(self.ROIchanged) self.ROI.hide() # x and y profiles xPlot = imageWidget.addPlot(row=0, col=1) xPlot.hideAxis('left') xPlot.hideAxis('bottom') self.xProfile = xPlot.plot() imageWidget.ci.layout.setRowMaximumHeight(0, 40) xPlot.setXLink(self.vb) yPlot = imageWidget.addPlot(row=1, col=0) yPlot.hideAxis('left') yPlot.hideAxis('bottom') self.yProfile = yPlot.plot() self.yProfile.rotate(90) imageWidget.ci.layout.setColumnMaximumWidth(0, 40) yPlot.setYLink(self.vb) # viewBox custom Tools self.grid = guitools.Grid(self.vb) self.gridButton = QtGui.QPushButton('Grid') self.gridButton.setCheckable(True) self.gridButton.setEnabled(False) self.gridButton.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.gridButton.clicked.connect(self.grid.toggle) self.viewCtrlLayout.addWidget(self.gridButton, 1, 0) self.crosshair = guitools.Crosshair(self.vb) self.crosshairButton = QtGui.QPushButton('Crosshair') self.crosshairButton.setCheckable(True) self.crosshairButton.setEnabled(False) self.crosshairButton.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.crosshairButton.pressed.connect(self.crosshair.toggle) self.viewCtrlLayout.addWidget(self.crosshairButton, 1, 1) self.levelsButton = QtGui.QPushButton('Update Levels') self.levelsButton.setEnabled(False) self.levelsButton.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.levelsButton.pressed.connect(self.autoLevels) proxy = QtGui.QGraphicsProxyWidget() proxy.setWidget(self.levelsButton) imageWidget.addItem(proxy, row=0, col=2) # Initial camera configuration taken from the parameter tree self.orcaflash.setPropertyValue('exposure_time', self.expPar.value()) self.adjustFrame() self.updateFrame() # Illumination dock area illumDockArea = DockArea() # Laser dock laserDock = Dock("Laser Control", size=(300, 1)) self.laserWidgets = lasercontrol.LaserWidget(self.lasers, self.nidaq) laserDock.addWidget(self.laserWidgets) illumDockArea.addDock(laserDock) # Line Alignment Tool self.alignmentWidget = QtGui.QWidget() alignmentLayout = QtGui.QGridLayout() self.alignmentWidget.setLayout(alignmentLayout) self.angleEdit = QtGui.QLineEdit('30') self.alignmentLineMakerButton = QtGui.QPushButton('Alignment Line') self.angle = np.float(self.angleEdit.text()) self.alignmentLineMakerButton.clicked.connect(self.alignmentToolAux) self.alignmentCheck = QtGui.QCheckBox('Show Alignment Tool') alignmentLayout.addWidget(QtGui.QLabel('Line Angle'), 0, 0) alignmentLayout.addWidget(self.angleEdit, 0, 1) alignmentLayout.addWidget(self.alignmentLineMakerButton, 1, 0) alignmentLayout.addWidget(self.alignmentCheck, 1, 1) alignmentDock = Dock("Alignment Tool", size=(1, 1)) alignmentDock.addWidget(self.alignmentWidget) illumDockArea.addDock(alignmentDock, 'right') # Z align widget ZalignDock = Dock("Axial Alignment Tool", size=(1, 1)) self.ZalignWidget = guitools.AlignWidgetAverage(self) ZalignDock.addWidget(self.ZalignWidget) illumDockArea.addDock(ZalignDock, 'above', alignmentDock) # Rotational align widget RotalignDock = Dock("Rotational Alignment Tool", size=(1, 1)) self.RotalignWidget = guitools.AlignWidgetXYProject(self) RotalignDock.addWidget(self.RotalignWidget) illumDockArea.addDock(RotalignDock, 'above', alignmentDock) # Dock widget dockArea = DockArea() # Focus Lock widget FocusLockDock = Dock("Focus Lock", size=(400, 400)) self.FocusLockWidget = focus.FocusWidget(pzt, webcam) FocusLockDock.addWidget(self.FocusLockWidget) dockArea.addDock(FocusLockDock) # Scanner scanDock = Dock('Scan', size=(1, 1)) self.scanWidget = scanner.ScanWidget(self.nidaq, self) scanDock.addWidget(self.scanWidget) dockArea.addDock(scanDock, 'below', FocusLockDock) # Piezo positioner piezoDock = Dock('Piezo positioner', size=(1, 1)) self.piezoWidget = scanner.Positionner(self.scanWidget) piezoDock.addWidget(self.piezoWidget) dockArea.addDock(piezoDock, 'bottom', alignmentDock) console = ConsoleWidget(namespace={'pg': pg, 'np': np}) self.setWindowTitle('TempestaDev') self.cwidget = QtGui.QWidget() self.setCentralWidget(self.cwidget) layout = QtGui.QGridLayout() self.cwidget.setLayout(layout) layout.addWidget(self.presetsMenu, 0, 0) layout.addWidget(self.loadPresetButton, 0, 1) layout.addWidget(cameraWidget, 1, 0, 2, 2) layout.addWidget(self.viewCtrl, 3, 0, 1, 2) layout.addWidget(self.recWidget, 4, 0, 1, 2) layout.addWidget(console, 5, 0, 1, 2) layout.addWidget(imageWidget, 0, 2, 6, 1) layout.addWidget(illumDockArea, 0, 3, 2, 1) layout.addWidget(dockArea, 2, 3, 4, 1) layout.setRowMinimumHeight(2, 175) layout.setRowMinimumHeight(3, 100) layout.setRowMinimumHeight(5, 175) layout.setColumnMinimumWidth(0, 275) imageWidget.ci.layout.setColumnFixedWidth(1, 1150) imageWidget.ci.layout.setRowFixedHeight(1, 1150) layout.setColumnMinimumWidth(2, 1350)
def setupUi(self, Console): Console.setObjectName("Console") Console.resize(979, 656) self.horizontalLayout_3 = QtWidgets.QHBoxLayout(Console) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.verticalLayout_5 = QtWidgets.QVBoxLayout() self.verticalLayout_5.setObjectName("verticalLayout_5") self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.GroupBox_resample = QtWidgets.QGroupBox(Console) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.GroupBox_resample.sizePolicy().hasHeightForWidth()) self.GroupBox_resample.setSizePolicy(sizePolicy) self.GroupBox_resample.setMinimumSize(QtCore.QSize(190, 80)) self.GroupBox_resample.setMaximumSize(QtCore.QSize(250, 90)) self.GroupBox_resample.setObjectName("GroupBox_resample") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.GroupBox_resample) self.verticalLayout_3.setObjectName("verticalLayout_3") self.HBoxLayout_resample = QtWidgets.QHBoxLayout() self.HBoxLayout_resample.setObjectName("HBoxLayout_resample") self.RadioButton_min_1 = QtWidgets.QRadioButton(self.GroupBox_resample) self.RadioButton_min_1.setChecked(True) self.RadioButton_min_1.setObjectName("RadioButton_min_1") self.HBoxLayout_resample.addWidget(self.RadioButton_min_1) self.RadioButton_min_5 = QtWidgets.QRadioButton(self.GroupBox_resample) self.RadioButton_min_5.setObjectName("RadioButton_min_5") self.HBoxLayout_resample.addWidget(self.RadioButton_min_5) self.RadioButton_min_10 = QtWidgets.QRadioButton( self.GroupBox_resample) self.RadioButton_min_10.setObjectName("RadioButton_min_10") self.HBoxLayout_resample.addWidget(self.RadioButton_min_10) self.RadioButton_min_30 = QtWidgets.QRadioButton( self.GroupBox_resample) self.RadioButton_min_30.setObjectName("RadioButton_min_30") self.HBoxLayout_resample.addWidget(self.RadioButton_min_30) self.verticalLayout_3.addLayout(self.HBoxLayout_resample) self.horizontalLayout_2.addWidget(self.GroupBox_resample) self.GroupBox_goto = QtWidgets.QGroupBox(Console) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.GroupBox_goto.sizePolicy().hasHeightForWidth()) self.GroupBox_goto.setSizePolicy(sizePolicy) self.GroupBox_goto.setMinimumSize(QtCore.QSize(440, 80)) self.GroupBox_goto.setMaximumSize(QtCore.QSize(16777215, 90)) self.GroupBox_goto.setObjectName("GroupBox_goto") self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.GroupBox_goto) self.verticalLayout_4.setObjectName("verticalLayout_4") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.horizontalLayout_his = QtWidgets.QHBoxLayout() self.horizontalLayout_his.setObjectName("horizontalLayout_his") self.verticalLayout_from_to = QtWidgets.QVBoxLayout() self.verticalLayout_from_to.setObjectName("verticalLayout_from_to") self.horizontalLayout_from = QtWidgets.QHBoxLayout() self.horizontalLayout_from.setObjectName("horizontalLayout_from") self.Label_from = QtWidgets.QLabel(self.GroupBox_goto) self.Label_from.setObjectName("Label_from") self.horizontalLayout_from.addWidget(self.Label_from) self.DateTimeEdit_start = QtWidgets.QDateTimeEdit(self.GroupBox_goto) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.DateTimeEdit_start.sizePolicy().hasHeightForWidth()) self.DateTimeEdit_start.setSizePolicy(sizePolicy) self.DateTimeEdit_start.setMinimumSize(QtCore.QSize(130, 18)) self.DateTimeEdit_start.setMaximumSize(QtCore.QSize(16777215, 25)) self.DateTimeEdit_start.setLocale( QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates)) self.DateTimeEdit_start.setDateTime( QtCore.QDateTime(QtCore.QDate(2018, 1, 1), QtCore.QTime(0, 0, 0))) self.DateTimeEdit_start.setCurrentSection( QtWidgets.QDateTimeEdit.MonthSection) self.DateTimeEdit_start.setCalendarPopup(True) self.DateTimeEdit_start.setObjectName("DateTimeEdit_start") self.horizontalLayout_from.addWidget(self.DateTimeEdit_start) self.verticalLayout_from_to.addLayout(self.horizontalLayout_from) self.horizontalLayout_to = QtWidgets.QHBoxLayout() self.horizontalLayout_to.setObjectName("horizontalLayout_to") self.label_to = QtWidgets.QLabel(self.GroupBox_goto) self.label_to.setObjectName("label_to") self.horizontalLayout_to.addWidget(self.label_to) self.DateTimeEdit_end = QtWidgets.QDateTimeEdit(self.GroupBox_goto) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.DateTimeEdit_end.sizePolicy().hasHeightForWidth()) self.DateTimeEdit_end.setSizePolicy(sizePolicy) self.DateTimeEdit_end.setMinimumSize(QtCore.QSize(130, 18)) self.DateTimeEdit_end.setMaximumSize(QtCore.QSize(16777215, 25)) self.DateTimeEdit_end.setLocale( QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates)) self.DateTimeEdit_end.setButtonSymbols( QtWidgets.QAbstractSpinBox.UpDownArrows) self.DateTimeEdit_end.setDateTime( QtCore.QDateTime(QtCore.QDate(2018, 3, 20), QtCore.QTime(0, 0, 0))) self.DateTimeEdit_end.setCurrentSection( QtWidgets.QDateTimeEdit.MonthSection) self.DateTimeEdit_end.setCalendarPopup(True) self.DateTimeEdit_end.setObjectName("DateTimeEdit_end") self.horizontalLayout_to.addWidget(self.DateTimeEdit_end) self.verticalLayout_from_to.addLayout(self.horizontalLayout_to) self.horizontalLayout_his.addLayout(self.verticalLayout_from_to) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.horizontalLayout_his.addItem(spacerItem) self.Button_history = QtWidgets.QPushButton(self.GroupBox_goto) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.Button_history.sizePolicy().hasHeightForWidth()) self.Button_history.setSizePolicy(sizePolicy) self.Button_history.setMinimumSize(QtCore.QSize(90, 20)) self.Button_history.setMaximumSize(QtCore.QSize(100, 28)) font = QtGui.QFont() font.setPointSize(8) self.Button_history.setFont(font) self.Button_history.setObjectName("Button_history") self.horizontalLayout_his.addWidget(self.Button_history) self.horizontalLayout.addLayout(self.horizontalLayout_his) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.horizontalLayout.addItem(spacerItem1) self.Button_current = QtWidgets.QPushButton(self.GroupBox_goto) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.Button_current.sizePolicy().hasHeightForWidth()) self.Button_current.setSizePolicy(sizePolicy) self.Button_current.setMinimumSize(QtCore.QSize(90, 20)) self.Button_current.setMaximumSize(QtCore.QSize(100, 28)) font = QtGui.QFont() font.setPointSize(8) self.Button_current.setFont(font) self.Button_current.setObjectName("Button_current") self.horizontalLayout.addWidget(self.Button_current) self.verticalLayout_4.addLayout(self.horizontalLayout) self.horizontalLayout_2.addWidget(self.GroupBox_goto) self.verticalLayout_5.addLayout(self.horizontalLayout_2) self.ConsoleWidget_con = ConsoleWidget(Console) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.ConsoleWidget_con.sizePolicy().hasHeightForWidth()) self.ConsoleWidget_con.setSizePolicy(sizePolicy) self.ConsoleWidget_con.setMinimumSize(QtCore.QSize(630, 300)) self.ConsoleWidget_con.setFocusPolicy(QtCore.Qt.StrongFocus) self.ConsoleWidget_con.setObjectName("ConsoleWidget_con") self.verticalLayout_5.addWidget(self.ConsoleWidget_con) self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 2, 1) self.verticalLayout_6 = QtWidgets.QVBoxLayout() self.verticalLayout_6.setObjectName("verticalLayout_6") self.TabWidget_data = QtWidgets.QTabWidget(Console) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.TabWidget_data.sizePolicy().hasHeightForWidth()) self.TabWidget_data.setSizePolicy(sizePolicy) self.TabWidget_data.setMinimumSize(QtCore.QSize(311, 370)) self.TabWidget_data.setObjectName("TabWidget_data") self.tab_ticker = QtWidgets.QWidget() self.tab_ticker.setObjectName("tab_ticker") self.verticalLayout = QtWidgets.QVBoxLayout(self.tab_ticker) self.verticalLayout.setObjectName("verticalLayout") self.TableWidget_tickers = QtWidgets.QTableWidget(self.tab_ticker) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.TableWidget_tickers.sizePolicy().hasHeightForWidth()) self.TableWidget_tickers.setSizePolicy(sizePolicy) self.TableWidget_tickers.setMinimumSize(QtCore.QSize(296, 327)) self.TableWidget_tickers.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.TableWidget_tickers.setAutoScroll(False) self.TableWidget_tickers.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self.TableWidget_tickers.setTabKeyNavigation(False) self.TableWidget_tickers.setObjectName("TableWidget_tickers") self.TableWidget_tickers.setColumnCount(3) self.TableWidget_tickers.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.TableWidget_tickers.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_tickers.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_tickers.setHorizontalHeaderItem(2, item) self.TableWidget_tickers.verticalHeader().setVisible(False) self.verticalLayout.addWidget(self.TableWidget_tickers) self.TabWidget_data.addTab(self.tab_ticker, "") self.tab_price = QtWidgets.QWidget() self.tab_price.setObjectName("tab_price") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab_price) self.verticalLayout_2.setObjectName("verticalLayout_2") self.TableWidget_prices = QtWidgets.QTableWidget(self.tab_price) sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.TableWidget_prices.sizePolicy().hasHeightForWidth()) self.TableWidget_prices.setSizePolicy(sizePolicy) self.TableWidget_prices.setFrameShape(QtWidgets.QFrame.StyledPanel) self.TableWidget_prices.setFrameShadow(QtWidgets.QFrame.Sunken) self.TableWidget_prices.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.TableWidget_prices.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.TableWidget_prices.setSizeAdjustPolicy( QtWidgets.QAbstractScrollArea.AdjustToContents) self.TableWidget_prices.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self.TableWidget_prices.setSelectionMode( QtWidgets.QAbstractItemView.SingleSelection) self.TableWidget_prices.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) self.TableWidget_prices.setGridStyle(QtCore.Qt.DashLine) self.TableWidget_prices.setObjectName("TableWidget_prices") self.TableWidget_prices.setColumnCount(2) self.TableWidget_prices.setRowCount(10) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setVerticalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(0, 0, item) item = QtWidgets.QTableWidgetItem() brush = QtGui.QBrush(QtGui.QColor(0, 255, 127)) brush.setStyle(QtCore.Qt.NoBrush) item.setBackground(brush) self.TableWidget_prices.setItem(1, 0, item) item = QtWidgets.QTableWidgetItem() brush = QtGui.QBrush(QtGui.QColor(0, 255, 127)) brush.setStyle(QtCore.Qt.NoBrush) item.setBackground(brush) self.TableWidget_prices.setItem(2, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(3, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(4, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(5, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(6, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(7, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(8, 0, item) item = QtWidgets.QTableWidgetItem() self.TableWidget_prices.setItem(9, 0, item) self.TableWidget_prices.horizontalHeader().setDefaultSectionSize(125) self.TableWidget_prices.horizontalHeader().setStretchLastSection(True) self.TableWidget_prices.verticalHeader().setDefaultSectionSize(45) self.verticalLayout_2.addWidget(self.TableWidget_prices) self.TabWidget_data.addTab(self.tab_price, "") self.verticalLayout_6.addWidget(self.TabWidget_data) self.gridLayout.addLayout(self.verticalLayout_6, 0, 1, 1, 1) spacerItem2 = QtWidgets.QSpacerItem(308, 108, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem2, 1, 1, 1, 1) self.horizontalLayout_3.addLayout(self.gridLayout) self.retranslateUi(Console) self.TabWidget_data.setCurrentIndex(1) QtCore.QMetaObject.connectSlotsByName(Console)
if __name__ == '__main__': app = QtWidgets.QApplication([]) opts_A = \ { 'b': { 'use_slider': True, 'minmax': (0, 100), 'step': 1, 'suffix': '%', 'typ': int, 'tooltip': 'yay tooltips' }, 'c': {'ignore': True} } functions = Functions(functions=[func_A, func_B], arg_opts=[opts_A, None], scroll=False, orient='V') console = ConsoleWidget(parent=functions, namespace={'this': functions}) functions.main_layout.addWidget(console) functions.sig_changed.connect(print) functions.show() app.exec()
def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(978, 711) icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap(_fromUtf8(":/exterminator/icons/program_icon.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setToolTip(_fromUtf8("")) MainWindow.setWindowFilePath(_fromUtf8("")) MainWindow.setTabShape(QtGui.QTabWidget.Rounded) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.verticalLayout_5 = QtGui.QVBoxLayout(self.centralwidget) self.verticalLayout_5.setObjectName(_fromUtf8("verticalLayout_5")) self.label_4 = QtGui.QLabel(self.centralwidget) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.label_4.setFont(font) self.label_4.setObjectName(_fromUtf8("label_4")) self.verticalLayout_5.addWidget(self.label_4) self.overviewComboBox = QtGui.QComboBox(self.centralwidget) font = QtGui.QFont() font.setBold(True) font.setItalic(True) font.setWeight(75) self.overviewComboBox.setFont(font) self.overviewComboBox.setObjectName(_fromUtf8("overviewComboBox")) self.verticalLayout_5.addWidget(self.overviewComboBox) self.line = QtGui.QFrame(self.centralwidget) self.line.setLineWidth(17) self.line.setObjectName(_fromUtf8("line")) self.verticalLayout_5.addWidget(self.line) self.tabWidget = QtGui.QTabWidget(self.centralwidget) self.tabWidget.setEnabled(True) self.tabWidget.setFocusPolicy(QtCore.Qt.TabFocus) self.tabWidget.setAcceptDrops(False) self.tabWidget.setAutoFillBackground(False) self.tabWidget.setTabPosition(QtGui.QTabWidget.North) self.tabWidget.setTabShape(QtGui.QTabWidget.Rounded) self.tabWidget.setElideMode(QtCore.Qt.ElideNone) self.tabWidget.setDocumentMode(False) self.tabWidget.setTabsClosable(False) self.tabWidget.setMovable(True) self.tabWidget.setObjectName(_fromUtf8("tabWidget")) self.tab_tiles = QtGui.QWidget() self.tab_tiles.setObjectName(_fromUtf8("tab_tiles")) self.horizontalLayout = QtGui.QHBoxLayout(self.tab_tiles) self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.splitter = QtGui.QSplitter(self.tab_tiles) self.splitter.setOrientation(QtCore.Qt.Vertical) self.splitter.setObjectName(_fromUtf8("splitter")) self.treeDataTiles = QtGui.QTreeWidget(self.splitter) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth( self.treeDataTiles.sizePolicy().hasHeightForWidth()) self.treeDataTiles.setSizePolicy(sizePolicy) self.treeDataTiles.setWhatsThis( _fromUtf8( "This is widget where in tree maner all input data are presented.\n" "This can be composed just from one detector (in. example BSE) images, or can be complicated more than ten element mappings.\n" "This is not interactive view. If this doesn\'t work after importing or appending data something is broken." )) self.treeDataTiles.setObjectName(_fromUtf8("treeDataTiles")) self.treeDataTiles.headerItem().setText(0, _fromUtf8("data files")) self.verticalLayoutWidget = QtGui.QWidget(self.splitter) self.verticalLayoutWidget.setObjectName( _fromUtf8("verticalLayoutWidget")) self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.label_2 = QtGui.QLabel(self.verticalLayoutWidget) self.label_2.setObjectName(_fromUtf8("label_2")) self.verticalLayout.addWidget(self.label_2) self.plainTextEdit = QtGui.QPlainTextEdit(self.verticalLayoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth( self.plainTextEdit.sizePolicy().hasHeightForWidth()) self.plainTextEdit.setSizePolicy(sizePolicy) self.plainTextEdit.setMinimumSize(QtCore.QSize(200, 100)) self.plainTextEdit.setWhatsThis( _fromUtf8( "Not inteactive text widget which gets and presents statistics of widget above (data widget)" )) self.plainTextEdit.setReadOnly(True) self.plainTextEdit.setPlainText(_fromUtf8("")) self.plainTextEdit.setObjectName(_fromUtf8("plainTextEdit")) self.verticalLayout.addWidget(self.plainTextEdit) self.horizontalLayout.addWidget(self.splitter) self.tabWidget.addTab(self.tab_tiles, _fromUtf8("")) self.tab_param = QtGui.QWidget() self.tab_param.setEnabled(True) self.tab_param.setObjectName(_fromUtf8("tab_param")) self.gridLayout_4 = QtGui.QGridLayout(self.tab_param) self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) self.splitter_2 = QtGui.QSplitter(self.tab_param) self.splitter_2.setOrientation(QtCore.Qt.Horizontal) self.splitter_2.setObjectName(_fromUtf8("splitter_2")) self.gridLayoutWidget = QtGui.QWidget(self.splitter_2) self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget")) self.gridLayout_3 = QtGui.QGridLayout(self.gridLayoutWidget) self.gridLayout_3.setMargin(0) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) self.treeParameters = ParameterTree(self.gridLayoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.treeParameters.sizePolicy().hasHeightForWidth()) self.treeParameters.setSizePolicy(sizePolicy) self.treeParameters.setMinimumSize(QtCore.QSize(280, 0)) self.treeParameters.setObjectName(_fromUtf8("treeParameters")) self.gridLayout_3.addWidget(self.treeParameters, 0, 0, 1, 1) self.setAsDefault = QtGui.QPushButton(self.gridLayoutWidget) self.setAsDefault.setObjectName(_fromUtf8("setAsDefault")) self.gridLayout_3.addWidget(self.setAsDefault, 1, 0, 1, 1) self.gridLayout_4.addWidget(self.splitter_2, 0, 0, 1, 1) self.tabWidget.addTab(self.tab_param, _fromUtf8("")) self.tab_filters = QtGui.QWidget() self.tab_filters.setObjectName(_fromUtf8("tab_filters")) self.verticalLayout_7 = QtGui.QVBoxLayout(self.tab_filters) self.verticalLayout_7.setObjectName(_fromUtf8("verticalLayout_7")) self.splitter_3 = QtGui.QSplitter(self.tab_filters) self.splitter_3.setOrientation(QtCore.Qt.Vertical) self.splitter_3.setObjectName(_fromUtf8("splitter_3")) self.filtersTreeView = ParameterTree(self.splitter_3) self.filtersTreeView.setEditTriggers( QtGui.QAbstractItemView.NoEditTriggers) self.filtersTreeView.setAlternatingRowColors(True) self.filtersTreeView.setObjectName(_fromUtf8("filtersTreeView")) self.filterParamView = ParameterTree(self.splitter_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.filterParamView.sizePolicy().hasHeightForWidth()) self.filterParamView.setSizePolicy(sizePolicy) self.filterParamView.setMinimumSize(QtCore.QSize(0, 40)) self.filterParamView.setMaximumSize(QtCore.QSize(16777215, 100)) self.filterParamView.setObjectName(_fromUtf8("filterParamView")) self.verticalLayout_7.addWidget(self.splitter_3) self.tabWidget.addTab(self.tab_filters, _fromUtf8("")) self.tab_finish = QtGui.QWidget() self.tab_finish.setObjectName(_fromUtf8("tab_finish")) self.verticalLayout_3 = QtGui.QVBoxLayout(self.tab_finish) self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) self.treeFinalWidget = QtGui.QTreeWidget(self.tab_finish) self.treeFinalWidget.setObjectName(_fromUtf8("treeFinalWidget")) self.treeFinalWidget.headerItem().setText( 0, _fromUtf8("stuff (do not edit!)")) self.treeFinalWidget.headerItem().setText( 1, _fromUtf8("final names and titles (editable)")) self.verticalLayout_3.addWidget(self.treeFinalWidget) self.tabWidget.addTab(self.tab_finish, _fromUtf8("")) self.verticalLayout_5.addWidget(self.tabWidget) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 978, 20)) self.menubar.setFocusPolicy(QtCore.Qt.NoFocus) self.menubar.setObjectName(_fromUtf8("menubar")) self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName(_fromUtf8("menuFile")) self.menuEdit = QtGui.QMenu(self.menubar) self.menuEdit.setObjectName(_fromUtf8("menuEdit")) self.menuHelp = QtGui.QMenu(self.menubar) self.menuHelp.setObjectName(_fromUtf8("menuHelp")) self.menuView = QtGui.QMenu(self.menubar) self.menuView.setObjectName(_fromUtf8("menuView")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.toolBar = QtGui.QToolBar(MainWindow) self.toolBar.setMouseTracking(False) self.toolBar.setFocusPolicy(QtCore.Qt.NoFocus) self.toolBar.setWhatsThis( _fromUtf8("Toolbar, what else did you expect?")) self.toolBar.setMovable(True) self.toolBar.setIconSize(QtCore.QSize(64, 64)) self.toolBar.setObjectName(_fromUtf8("toolBar")) MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.overviewWidget = QtGui.QDockWidget(MainWindow) self.overviewWidget.setEnabled(True) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.overviewWidget.sizePolicy().hasHeightForWidth()) self.overviewWidget.setSizePolicy(sizePolicy) self.overviewWidget.setMinimumSize(QtCore.QSize(350, 150)) self.overviewWidget.setToolTip( _fromUtf8("widget with vector\n" "representation of the tiles")) self.overviewWidget.setAccessibleName(_fromUtf8("")) self.overviewWidget.setAccessibleDescription(_fromUtf8("")) self.overviewWidget.setFloating(True) self.overviewWidget.setFeatures( QtGui.QDockWidget.AllDockWidgetFeatures) self.overviewWidget.setWindowTitle( _fromUtf8("graphical overview of the tiles")) self.overviewWidget.setObjectName(_fromUtf8("overviewWidget")) self.dockWidgetContents = QtGui.QWidget() sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.dockWidgetContents.sizePolicy().hasHeightForWidth()) self.dockWidgetContents.setSizePolicy(sizePolicy) self.dockWidgetContents.setObjectName(_fromUtf8("dockWidgetContents")) self.verticalLayout_2 = QtGui.QVBoxLayout(self.dockWidgetContents) self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) self.graphicalOverview = GraphicsLayoutWidget(self.dockWidgetContents) self.graphicalOverview.setObjectName(_fromUtf8("graphicalOverview")) self.verticalLayout_2.addWidget(self.graphicalOverview) self.overviewWidget.setWidget(self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.overviewWidget) self.consoleWidget = QtGui.QDockWidget(MainWindow) self.consoleWidget.setWindowTitle(_fromUtf8("python console / debug")) self.consoleWidget.setObjectName(_fromUtf8("consoleWidget")) self.dockWidgetContents_2 = QtGui.QWidget() self.dockWidgetContents_2.setObjectName( _fromUtf8("dockWidgetContents_2")) self.verticalLayout_4 = QtGui.QVBoxLayout(self.dockWidgetContents_2) self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) self.pythonConsole = ConsoleWidget(self.dockWidgetContents_2) self.pythonConsole.setObjectName(_fromUtf8("pythonConsole")) self.verticalLayout_4.addWidget(self.pythonConsole) self.consoleWidget.setWidget(self.dockWidgetContents_2) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.consoleWidget) self.stitchWidget = QtGui.QDockWidget(MainWindow) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.stitchWidget.sizePolicy().hasHeightForWidth()) self.stitchWidget.setSizePolicy(sizePolicy) self.stitchWidget.setFloating(False) self.stitchWidget.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) self.stitchWidget.setWindowTitle(_fromUtf8("image stitching preview")) self.stitchWidget.setObjectName(_fromUtf8("stitchWidget")) self.dockWidgetContents_5 = QtGui.QWidget() self.dockWidgetContents_5.setObjectName( _fromUtf8("dockWidgetContents_5")) self.horizontalLayout_2 = QtGui.QHBoxLayout(self.dockWidgetContents_5) self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) self.graphicsView = GraphicsView(self.dockWidgetContents_5) self.graphicsView.setObjectName(_fromUtf8("graphicsView")) self.horizontalLayout_2.addWidget(self.graphicsView) self.stitchWidget.setWidget(self.dockWidgetContents_5) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.stitchWidget) self.filterDockWidget = QtGui.QDockWidget(MainWindow) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.filterDockWidget.sizePolicy().hasHeightForWidth()) self.filterDockWidget.setSizePolicy(sizePolicy) self.filterDockWidget.setMinimumSize(QtCore.QSize(300, 242)) self.filterDockWidget.setObjectName(_fromUtf8("filterDockWidget")) self.dockWidgetContents_3 = QtGui.QWidget() self.dockWidgetContents_3.setObjectName( _fromUtf8("dockWidgetContents_3")) self.gridLayout = QtGui.QGridLayout(self.dockWidgetContents_3) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.label_3 = QtGui.QLabel(self.dockWidgetContents_3) self.label_3.setObjectName(_fromUtf8("label_3")) self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) self.originalView = ImageView(self.dockWidgetContents_3) self.originalView.setObjectName(_fromUtf8("originalView")) self.gridLayout.addWidget(self.originalView, 1, 0, 1, 1) self.filteredView = ImageView(self.dockWidgetContents_3) self.filteredView.setObjectName(_fromUtf8("filteredView")) self.gridLayout.addWidget(self.filteredView, 3, 0, 1, 1) self.label = QtGui.QLabel(self.dockWidgetContents_3) self.label.setObjectName(_fromUtf8("label")) self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.filterDockWidget.setWidget(self.dockWidgetContents_3) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.filterDockWidget) self.actionAbout = QtGui.QAction(MainWindow) self.actionAbout.setObjectName(_fromUtf8("actionAbout")) self.actionImportDataFolder = QtGui.QAction(MainWindow) self.actionImportDataFolder.setEnabled(True) icon1 = QtGui.QIcon() icon1.addPixmap( QtGui.QPixmap( _fromUtf8(":/exterminator/icons/import_from_dir.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionImportDataFolder.setIcon(icon1) self.actionImportDataFolder.setObjectName( _fromUtf8("actionImportDataFolder")) self.actionImportMetadata = QtGui.QAction(MainWindow) self.actionImportMetadata.setEnabled(False) icon2 = QtGui.QIcon() icon2.addPixmap( QtGui.QPixmap(_fromUtf8(":/exterminator/icons/import_rtj.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionImportMetadata.setIcon(icon2) self.actionImportMetadata.setObjectName( _fromUtf8("actionImportMetadata")) self.actionExportHdf5 = QtGui.QAction(MainWindow) self.actionExportHdf5.setEnabled(False) icon3 = QtGui.QIcon() icon3.addPixmap( QtGui.QPixmap(_fromUtf8(":/exterminator/icons/export_hdf5.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionExportHdf5.setIcon(icon3) self.actionExportHdf5.setObjectName(_fromUtf8("actionExportHdf5")) self.actionExportImages = QtGui.QAction(MainWindow) self.actionExportImages.setEnabled(False) icon4 = QtGui.QIcon() icon4.addPixmap( QtGui.QPixmap(_fromUtf8(":/exterminator/icons/export_images.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionExportImages.setIcon(icon4) self.actionExportImages.setObjectName(_fromUtf8("actionExportImages")) self.actionQuit = QtGui.QAction(MainWindow) icon5 = QtGui.QIcon() icon5.addPixmap( QtGui.QPixmap( _fromUtf8(":/exterminator/icons/system-log-out.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionQuit.setIcon(icon5) self.actionQuit.setShortcutContext(QtCore.Qt.ApplicationShortcut) self.actionQuit.setObjectName(_fromUtf8("actionQuit")) self.actionClear = QtGui.QAction(MainWindow) icon6 = QtGui.QIcon() icon6.addPixmap( QtGui.QPixmap(_fromUtf8(":/exterminator/icons/edit-delete.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionClear.setIcon(icon6) self.actionClear.setObjectName(_fromUtf8("actionClear")) self.actionChangelog = QtGui.QAction(MainWindow) self.actionChangelog.setObjectName(_fromUtf8("actionChangelog")) self.actionAbout_Qt = QtGui.QAction(MainWindow) self.actionAbout_Qt.setObjectName(_fromUtf8("actionAbout_Qt")) self.actionDynamicWidgets = QtGui.QAction(MainWindow) self.actionDynamicWidgets.setCheckable(True) self.actionDynamicWidgets.setChecked(True) self.actionDynamicWidgets.setText( _fromUtf8("toggle dynamic visibility of widgets")) self.actionDynamicWidgets.setToolTip( _fromUtf8( "uncheck to prevent closing/showing graphical dockable widgets by changing tabs in main window" )) self.actionDynamicWidgets.setObjectName( _fromUtf8("actionDynamicWidgets")) self.menuFile.addAction(self.actionImportDataFolder) self.menuFile.addAction(self.actionImportMetadata) self.menuFile.addAction(self.actionExportImages) self.menuFile.addAction(self.actionExportHdf5) self.menuFile.addSeparator() self.menuFile.addAction(self.actionQuit) self.menuEdit.addAction(self.actionClear) self.menuHelp.addAction(self.actionAbout) self.menuHelp.addAction(self.actionChangelog) self.menuHelp.addSeparator() self.menuHelp.addAction(self.actionAbout_Qt) self.menuView.addAction(self.actionDynamicWidgets) self.menuView.addSeparator() self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuEdit.menuAction()) self.menubar.addAction(self.menuView.menuAction()) self.menubar.addAction(self.menuHelp.menuAction()) self.toolBar.addAction(self.actionImportDataFolder) self.toolBar.addAction(self.actionImportMetadata) self.toolBar.addAction(self.actionExportImages) self.toolBar.addAction(self.actionExportHdf5) self.toolBar.addAction(self.actionClear) self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) QtCore.QObject.connect(self.actionQuit, QtCore.SIGNAL(_fromUtf8("triggered()")), MainWindow.close) QtCore.QMetaObject.connectSlotsByName(MainWindow) MainWindow.setTabOrder(self.overviewComboBox, self.tabWidget) MainWindow.setTabOrder(self.tabWidget, self.treeDataTiles) MainWindow.setTabOrder(self.treeDataTiles, self.plainTextEdit) MainWindow.setTabOrder(self.plainTextEdit, self.treeParameters) MainWindow.setTabOrder(self.treeParameters, self.setAsDefault) MainWindow.setTabOrder(self.setAsDefault, self.filtersTreeView) MainWindow.setTabOrder(self.filtersTreeView, self.filterParamView) MainWindow.setTabOrder(self.filterParamView, self.treeFinalWidget) MainWindow.setTabOrder(self.treeFinalWidget, self.graphicalOverview) MainWindow.setTabOrder(self.graphicalOverview, self.graphicsView) MainWindow.setTabOrder(self.graphicsView, self.originalView) MainWindow.setTabOrder(self.originalView, self.filteredView)
def __init__(self, app_handle = None): super().__init__() self.app_handle = app_handle if os.name == 'posix': pyecog_string = '🇵 🇾 🇪 🇨 🇴 🇬' else: pyecog_string = 'PyEcog' print('\n',pyecog_string,'\n') # Initialize Main Window geometry # self.title = "ℙ𝕪𝔼𝕔𝕠𝕘" self.title = pyecog_string (size, rect) = self.get_available_screen() icon_file = pkg_resources.resource_filename('pyecog2', 'icons/icon.png') print('ICON:', icon_file) self.setWindowIcon(QtGui.QIcon(icon_file)) self.app_handle.setWindowIcon(QtGui.QIcon(icon_file)) self.setWindowTitle(self.title) self.setGeometry(0, 0, size.width(), size.height()) # self.setWindowFlags(QtCore.Qt.FramelessWindowHint) # fooling around # self.setWindowFlags(QtCore.Qt.CustomizeWindowHint| QtCore.Qt.Tool) # self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.main_model = MainModel() self.autosave_timer = QtCore.QTimer() self.live_recording_timer = QtCore.QTimer() # Populate Main window with widgets # self.createDockWidget() self.dock_list = {} self.paired_graphics_view = PairedGraphicsView(parent=self) self.tree_element = FileTreeElement(parent=self) self.main_model.sigProjectChanged.connect(lambda: self.tree_element.set_rootnode_from_project(self.main_model.project)) self.dock_list['File Tree'] = QDockWidget("File Tree", self) self.dock_list['File Tree'].setWidget(self.tree_element.widget) self.dock_list['File Tree'].setFloating(False) self.dock_list['File Tree'].setObjectName("File Tree") self.dock_list['File Tree'].setAllowedAreas(Qt.RightDockWidgetArea | Qt.LeftDockWidgetArea | Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea) self.dock_list['File Tree'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable) self.plot_controls = PlotControls(self.main_model) self.plot_controls.sigUpdateXrange_i.connect(self.paired_graphics_view.insetview_set_xrange) self.plot_controls.sigUpdateXrange_o.connect(self.paired_graphics_view.overview_set_xrange) self.plot_controls.sigUpdateFilter.connect(self.paired_graphics_view.updateFilterSettings) self.dock_list['Plot Controls'] = QDockWidget("Plot controls", self) self.dock_list['Plot Controls'].setWidget(self.plot_controls) self.dock_list['Plot Controls'].setFloating(False) self.dock_list['Plot Controls'].setObjectName("Plot Controls") self.dock_list['Plot Controls'].setAllowedAreas( Qt.RightDockWidgetArea | Qt.LeftDockWidgetArea | Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea) self.dock_list['Plot Controls'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable) self.dock_list['Hints'] = QDockWidget("Hints", self) self.text_edit = QTextBrowser() hints_file = pkg_resources.resource_filename('pyecog2', 'HelperHints.md') # text = open('HelperHints.md').read() print('hints file:',hints_file) text = open(hints_file).read() text = text.replace('icons/banner_small.png',pkg_resources.resource_filename('pyecog2', 'icons/banner_small.png')) self.text_edit.setMarkdown(text) self.dock_list['Hints'].setWidget(self.text_edit) self.dock_list['Hints'].setObjectName("Hints") # self.dock_list['Hints'].setFloating(False) # self.dock_list['Hints'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable) self.annotation_table = AnnotationTableWidget(self.main_model.annotations,self) # passing self as parent in position 2 self.dock_list['Annotations Table'] = QDockWidget("Annotations Table", self) self.dock_list['Annotations Table'].setWidget(self.annotation_table) self.dock_list['Annotations Table'].setObjectName("Annotations Table") self.dock_list['Annotations Table'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable) self.annotation_parameter_tree = AnnotationParameterTee(self.main_model.annotations) self.dock_list['Annotation Parameter Tree'] = QDockWidget("Annotation Parameter Tree", self) self.dock_list['Annotation Parameter Tree'].setWidget(self.annotation_parameter_tree) self.dock_list['Annotation Parameter Tree'].setObjectName("Annotation Parameter Tree") self.dock_list['Annotation Parameter Tree'].setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetMovable) self.video_element = VideoWindow(project=self.main_model.project) self.dock_list['Video'] = QDockWidget("Video", self) self.dock_list['Video'].setWidget(self.video_element) self.dock_list['Video'].setObjectName("Video") # self.dock_list['Video'].setFloating(True) # self.dock_list['Video'].hide() self.video_element.mediaPlayer.setNotifyInterval(40) # 25 fps # Video units are in miliseconds, pyecog units are in seconds self.video_element.sigTimeChanged.connect(self.main_model.set_time_position) self.main_model.sigTimeChanged.connect(self.video_element.setGlobalPosition) self.dock_list['FFT'] = QDockWidget("FFT", self) self.dock_list['FFT'].setWidget(FFTwindow(self.main_model)) self.dock_list['FFT'].setObjectName("FFT") # self.dock_list['FFT'].hide() self.dock_list['Wavelet'] = QDockWidget("Wavelet", self) self.dock_list['Wavelet'].setWidget(WaveletWindow(self.main_model)) self.dock_list['Wavelet'].setObjectName("Wavelet") # self.dock_list['Wavelet'].hide() self.dock_list['Console'] = QDockWidget("Console", self) self.dock_list['Console'].setWidget(ConsoleWidget(namespace={'MainWindow':self})) self.dock_list['Console'].setObjectName("Console") self.dock_list['Console'].hide() self.build_menubar() self.setCentralWidget(self.paired_graphics_view.splitter) self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Console']) self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['File Tree']) self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Hints']) self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Plot Controls']) self.addDockWidget(Qt.LeftDockWidgetArea, self.dock_list['Video']) self.addDockWidget(Qt.RightDockWidgetArea, self.dock_list['Annotation Parameter Tree']) self.addDockWidget(Qt.RightDockWidgetArea, self.dock_list['Annotations Table']) self.addDockWidget(Qt.RightDockWidgetArea, self.dock_list['FFT']) self.setCorner(Qt.BottomLeftCorner,Qt.LeftDockWidgetArea) self.setCorner(Qt.BottomRightCorner,Qt.RightDockWidgetArea) self.addDockWidget(Qt.BottomDockWidgetArea, self.dock_list['Wavelet']) # self.tabifyDockWidget(self.dock_list['Hints'], self.dock_list['File Tree']) self.resizeDocks([self.dock_list['File Tree'], self.dock_list['Hints'], self.dock_list['Plot Controls'],self.dock_list['Video']],[350,100,100,300],Qt.Vertical) self.resizeDocks([self.dock_list['Wavelet']],[400],Qt.Vertical) self.resizeDocks([self.dock_list['Video']],[400],Qt.Vertical) self.resizeDocks([self.dock_list['Video']],[400],Qt.Horizontal) self.resizeDocks([self.dock_list['FFT']],[400],Qt.Vertical) self.resizeDocks([self.dock_list['FFT']],[400],Qt.Horizontal) settings = QSettings("PyEcog","PyEcog") settings.beginGroup("StandardMainWindow") settings.setValue("windowGeometry", self.saveGeometry()) settings.setValue("windowState", self.saveState()) settings.setValue("darkMode", False) settings.setValue("autoSave", True) settings.endGroup() self.settings = QSettings("PyEcog", "PyEcog") print("reading configurations from: " + self.settings.fileName()) self.settings.beginGroup("MainWindow") # print(self.settings.value("windowGeometry", type=QByteArray)) self.restoreGeometry(self.settings.value("windowGeometry", type=QByteArray)) self.restoreState(self.settings.value("windowState", type=QByteArray)) self.action_darkmode.setChecked(self.settings.value("darkMode",type=bool)) self.toggle_darkmode() # pre toggle darkmode to make sure project loading dialogs are made with the correct color pallete try: settings = QSettings("PyEcog","PyEcog") settings.beginGroup("ProjectSettings") fname = settings.value("ProjectFileName") self.show() if fname.endswith('.pyecog'): print('Loading last opened Project:', fname) self.load_project(fname) else: print('Loading last opened directory:', fname) self.load_directory(fname) except Exception as e: print('ERROR in tree build') print(e) self.action_darkmode.setChecked(self.settings.value("darkMode",type=bool)) self.toggle_darkmode() # toggle again darkmode just to make sure the wavelet window and FFT are updated as well self.action_autosave.setChecked(self.settings.value("autoSave",type=bool)) self.toggle_auto_save()
def save(): global state state = area.saveState() restoreBtn.setEnabled(True) def load(): global state area.restoreState(state) saveBtn.clicked.connect(save) restoreBtn.clicked.connect(load) w2 = ConsoleWidget() d2.addWidget(w2) ## Hide title bar on dock 3 d3.hideTitleBar() w3 = pg.PlotWidget(title="Plot inside dock with no title bar") w3.plot(np.random.normal(size=100)) d3.addWidget(w3) w4 = pg.PlotWidget(title="Dock 4 plot") w4.plot(np.random.normal(size=100)) d4.addWidget(w4) w5 = pg.ImageView() w5.setImage(np.random.normal(size=(100, 100))) d5.addWidget(w5)
from pyqtgraph.console import ConsoleWidget def f(a: int = 1, b: float = 3.14, c: str = 'yay', d: bool = True): pass if __name__ == '__main__': app = QtWidgets.QApplication([]) opts = \ { 'b': { 'use_slider': True, 'minmax': (0, 100), 'step': 1, 'suffix': '%', 'typ': int, 'tooltip': 'yay tooltips' } } func = Function(f, arg_opts=opts) func.widget.show() console = ConsoleWidget(parent=func.widget, namespace={'this': func}) func.vlayout.addWidget(console) app.exec()