Example #1
0
    def __init__(self, parent=None):
        super(SimpleCanvasAndTool, self).__init__(parent=parent)
        self.canvas = SimpleCanvas()
        self.fig = self.canvas.fig
        self.mainLayout = QVBoxLayout()
        self.setLayout(self.mainLayout)

        self.toolbar = NavigationToolbar2(parent=self, canvas=self.canvas)
        self.mainLayout.addWidget(self.toolbar)
        self.mainLayout.addWidget(self.canvas)
Example #2
0
    def __init__(
        self,
        parent=None,
    ):
        QWidget.__init__(self, parent)
        self.mainLayout = QVBoxLayout()
        self.setLayout(self.mainLayout)

        self.canvas = SimpleCanvas()
        self.fig = self.canvas.fig
        self.toolbar = NavigationToolbar2(
            self.canvas,
            parent=self,
        )

        self.mainLayout.addWidget(self.toolbar)
        self.mainLayout.addWidget(self.canvas)
Example #3
0
 def add_figure(self, name, widget):
     """creates a matplotlib figure attaches it to the qwidget specified
         (widget needs to have a layout set (preferably verticalLayout) 
         adds a figure to self.figs"""
     print "---adding figure", name, widget
     if name in self.figs:
         return self.figs[name]
     else:
         fig = Figure()
         fig.patch.set_facecolor('w')
         canvas = FigureCanvas(fig)
         nav = NavigationToolbar2(canvas, self.ui)
         widget.layout().addWidget(canvas)
         widget.layout().addWidget(nav)
         canvas.setFocusPolicy(QtCore.Qt.ClickFocus)
         canvas.setFocus()
         self.figs[name] = fig
         return fig
Example #4
0
    def initUI(self, parent, adjust, name, point, marker, marker_size):

        QtGui.QMainWindow.__init__(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        self.setWindowTitle(name)
        self.resize(1000, 1000)
        screen = QtGui.QDesktopWidget().screenGeometry()
        self.move(random.randint(0, screen.height()),
                  random.randint(0, screen.width()))
        self.open = QtGui.QAction('&Open', self)
        self.open.setShortcut('Ctrl+O')
        self.open.setStatusTip('import graphics')
        self.connect(self.open, QtCore.SIGNAL('triggered()'), self.openGraph)

        self.close = QtGui.QAction('&Exit', self)
        self.close.setShortcut('Ctrl+Q')
        self.close.setStatusTip('Exit application')
        self.connect(self.close, QtCore.SIGNAL('triggered()'),
                     QtCore.SLOT('close()'))

        self.printG = QtGui.QAction('&Print', self)
        self.printG.setShortcut('Ctrl+P')
        self.printG.setStatusTip('Print graphics')
        self.connect(self.printG, QtCore.SIGNAL('triggered()'),
                     self.printGraph)

        self.save = QtGui.QAction('&Save', self)
        self.save.setShortcut('Ctrl+S')
        self.save.setStatusTip('Save Graphic')
        self.connect(self.save, QtCore.SIGNAL('triggered()'), self.showDialog)

        self.setStatusBar(QtGui.QStatusBar())
        self.menubar = self.menuBar()
        self.fileMenu1 = self.menubar.addMenu('&File')
        #self.fileMenu1.addAction(self.open)
        self.fileMenu1.addAction(self.save)
        self.fileMenu1.addAction(self.printG)
        self.fileMenu1.addAction(self.close)

        self.main_widget = QtGui.QWidget(self)
        self.main_lay = QtGui.QHBoxLayout(self.main_widget)

        #Creation of the graphics widged
        self.graph_widget = QtGui.QWidget(self)
        self.graph_lay = QtGui.QVBoxLayout(self.graph_widget)

        self.G = Canvas.CanvasQT(self.main_widget, width=6, height=4, dpi=100,\
                                    x=self.x,y=self.y,pxlbl=self.xlabel,pylbl=self.ylabel\
                                     ,point=point,marker=marker,marker_size=marker_size)
        self.navigation_toolbar = NavigationToolbar2(self.G, self)

        #creation of the option widget
        self.test = QtGui.QWidget()
        self.test.hide()
        self.option_layout = QtGui.QGridLayout(self.test)

        self.lbl2 = QtGui.QLabel("select file :", self)
        self.lbl2.setFixedSize(70, 36)
        self.tefile = QtGui.QTextEdit()
        self.tefile.setReadOnly(True)
        self.tefile.setFixedSize(100, 36)

        self.browse = QtGui.QPushButton('&Browse', self)
        self.browse.setFixedSize(100, 36)
        #        self.connect(self.browse ,QtCore.SIGNAL("clicked()"),self.openFile)

        self.tbro = QtGui.QTextBrowser()
        self.tbro.setFixedHeight(500)
        self.tbro.setFixedWidth(200)
        self.tbro.setLineWrapMode(QtGui.QTextEdit.NoWrap)

        self.lbl3 = QtGui.QLabel("x :", self)
        self.lbl3.setFixedSize(15, 36)

        self.CBox1 = QtGui.QComboBox()
        self.CBox1.addItem("")
        self.CBox1.setFixedSize(65, 36)
        #        self.connect(self.CBox1,QtCore.SIGNAL('currentIndexChanged(const QString&)'),self.changeData)

        self.lbl4 = QtGui.QLabel("y :", self)
        self.lbl4.setFixedSize(15, 36)

        self.CBox2 = QtGui.QComboBox()
        self.CBox2.addItem("")
        self.CBox2.setFixedSize(65, 36)
        #        self.connect(self.CBox2,QtCore.SIGNAL('currentIndexChanged(const QString&)'),self.changeData)

        self.imp = QtGui.QPushButton('&import', self)
        self.imp.setFixedSize(100, 36)
        #       self.connect(self.imp ,QtCore.SIGNAL("clicked()"),self.close)

        self.option_layout.addWidget(self.lbl2, 0, 0, 1, 1,
                                     QtCore.Qt.AlignCenter)
        self.option_layout.addWidget(self.tefile, 0, 1, 1, 4,
                                     QtCore.Qt.AlignLeft)
        self.option_layout.addWidget(self.browse, 0, 5, 1, 1,
                                     QtCore.Qt.AlignCenter)
        self.option_layout.addWidget(self.tbro, 1, 0, 10, 6,
                                     QtCore.Qt.AlignCenter)
        self.option_layout.addWidget(self.lbl3, 12, 0, 1, 1,
                                     QtCore.Qt.AlignRight)
        self.option_layout.addWidget(self.CBox1, 12, 1, 1, 1,
                                     QtCore.Qt.AlignLeft)
        self.option_layout.addWidget(self.lbl4, 12, 2, 1, 1,
                                     QtCore.Qt.AlignRight)
        self.option_layout.addWidget(self.CBox2, 12, 3, 1, 1,
                                     QtCore.Qt.AlignLeft)
        self.option_layout.addWidget(self.imp, 12, 5, 1, 1,
                                     QtCore.Qt.AlignLeft)

        self.graph_lay.addWidget(self.G)
        self.graph_lay.addWidget(self.navigation_toolbar, 0)
        self.main_lay.addWidget(self.graph_widget)
        self.main_lay.addWidget(self.test)

        if self.average:
            self.checkbox_average = QtGui.QCheckBox("Show average Value")
            self.connect(self.checkbox_average, QtCore.SIGNAL('clicked()'),
                         self.addAverage)
            self.lbl1 = QtGui.QLabel()
            self.lbl1.setFixedWidth(250)
            average = self.averageValue()
            display = self.displayData(
                average, self.getStandardDeviation(self.y, average))
            self.lbl1.setText('Average : ' + display)
            self.navigation_toolbar.addWidget(self.lbl1)
            self.navigation_toolbar.addWidget(self.checkbox_average)

        if adjust:
            self.G.adjust_x_lim(self.x, self.y)

        self.main_widget.setFocus()
        self.setCentralWidget(self.main_widget)
Example #5
0
    def __init__(self):
        ui_loader = QtUiTools.QUiLoader()
        print os.path.join(__file__, "scanning_confocal_mcl_ni.ui")
        ui_file = QtCore.QFile("scanning_confocal_mcl_ni.ui")
        ui_file.open(QtCore.QFile.ReadOnly)
        self.ui = ui_loader.load(ui_file)
        ui_file.close()

        self.HARDWARE_DEBUG = HARDWARE_DEBUG

        self.fig2d = Figure()
        self.ax2d = self.fig2d.add_subplot(111)
        self.ax2d.plot([0, 1])
        self.canvas2d = FigureCanvas(self.fig2d)
        self.ui.plot2D_verticalLayout.addWidget(self.canvas2d)
        self.navtoolbar_plot2d = NavigationToolbar2(self.canvas2d, self.ui)
        self.ui.plot2D_verticalLayout.addWidget(self.navtoolbar_plot2d)

        self.fig_opt = Figure()
        self.ax_opt = self.fig_opt.add_subplot(111)

        self.canvas_opt = FigureCanvas(self.fig_opt)
        self.ui.plot_optimize_verticalLayout.addWidget(self.canvas_opt)
        self.navtoolbar_plot_opt = NavigationToolbar2(self.canvas_opt, self.ui)
        self.ui.plot_optimize_verticalLayout.addWidget(
            self.navtoolbar_plot_opt)

        self.optimize_history = np.zeros(OPTIMIZE_HISTORY_LEN, dtype=np.float)
        self.optimize_ii = 0
        self.optimize_line, = self.ax_opt.plot(self.optimize_history)
        self.optimize_current_pos = self.ax_opt.axvline(self.optimize_ii,
                                                        color='r')

        ##################### hardware #########################################

        self.scanning = False

        ######## MCL NanoDrive Stage ###########################################
        self.nanodrive = MCLNanoDrive(debug=self.HARDWARE_DEBUG)
        try:
            self.hmax = self.nanodrive.cal[HAXIS_ID]
            self.vmax = self.nanodrive.cal[VAXIS_ID]
            self.ui.maxdim_label.setText("%s - %s scan. Max: %g x %g um" %
                                         (HAXIS, VAXIS, self.hmax, self.vmax))
        except Exception as e:
            print e
            self.ui.maxdim_label.setText("max: ? x ? um")

        # Logged Quantities
        self.x_position = LoggedQuantity(name='x_position', dtype=np.float)
        self.y_position = LoggedQuantity(name='y_position', dtype=np.float)
        self.z_position = LoggedQuantity(name='z_position', dtype=np.float)

        #self.x_position.updated_value.connect(self.ui.cx_lcdNumber.display)
        self.x_position.updated_value.connect(
            self.ui.cx_doubleSpinBox.setValue)
        self.ui.x_set_lineEdit.returnPressed.connect(
            self.x_position.update_value)

        #self.y_position.updated_value.connect(self.ui.cy_lcdNumber.display)
        self.y_position.updated_value.connect(
            self.ui.cy_doubleSpinBox.setValue)
        self.ui.y_set_lineEdit.returnPressed.connect(
            self.y_position.update_value)

        #self.z_position.updated_value.connect(self.ui.cz_lcdNumber.display)
        self.z_position.updated_value.connect(
            self.ui.cz_doubleSpinBox.setValue)
        self.ui.z_set_lineEdit.returnPressed.connect(
            self.z_position.update_value)

        self.x_position.hardware_set_func = lambda x: self.nanodrive.set_pos_ax(
            x, MCL_AXIS_ID["X"])
        self.y_position.hardware_set_func = lambda y: self.nanodrive.set_pos_ax(
            y, MCL_AXIS_ID["Y"])
        self.z_position.hardware_set_func = lambda z: self.nanodrive.set_pos_ax(
            z, MCL_AXIS_ID["Z"])

        ####### NI (apd) counter readout ##################################
        self.ni_counter = NI_FreqCounter(debug=self.HARDWARE_DEBUG)

        self.apd_count_rate = LoggedQuantity(name='apd_count_rate',
                                             dtype=np.float,
                                             fmt="%e")

        self.apd_count_rate.updated_text_value.connect(
            self.ui.apd_counter_output_lineEdit.setText)

        ########################################################################

        self.read_stage_position()
        self.read_ni_countrate()

        self.update_display()

        # update figure
        self.ax2d.set_xlim(0, self.hmax)
        self.ax2d.set_ylim(0, self.vmax)

        # events

        self.ui.scan_start_pushButton.clicked.connect(self.on_scan_start)
        self.ui.scan_stop_pushButton.clicked.connect(self.on_scan_stop)

        self.ui.fast_update_checkBox.stateChanged.connect(
            self.on_fast_timer_checkbox)

        self.ui.clearfig_pushButton.clicked.connect(self.on_clearfig)

        ### timers

        self.slow_display_timer = QtCore.QTimer(self.ui)
        self.slow_display_timer.timeout.connect(self.on_slow_display_timer)
        self.slow_display_timer.start(TIMER_MS)

        self.fast_timer = QtCore.QTimer(self.ui)
        self.fast_timer.timeout.connect(self.on_fast_timer)

        self.display_update_when_scanning_timer = QtCore.QTimer(self.ui)
        self.display_update_when_scanning_timer.timeout.connect(
            self.on_display_update_when_scanning_timer)