Exemple #1
0
    def _layout(self):
        parameters = self._procedure.parameter_objects()
        vbox = QtGui.QVBoxLayout(self)
        vbox.setSpacing(6)

        directory = getattr(self, self._inputs["directory_inputs"])
        font = QtGui.QFont()
        font.setBold(True)
        directory.label.setFont(font)
        vbox.addWidget(directory)
        grid = QtGui.QGridLayout()
        for index, (_,
                    parameter) in enumerate(self._inputs["frequency_inputs"]):
            label = QtGui.QLabel()
            label.setText(parameters[parameter].name)
            grid.addWidget(label, 0, index)
            text_edit = QtGui.QTextEdit()
            text_edit.sizeHint = lambda: QtCore.QSize(0, 120)
            grid.addWidget(getattr(self, parameter), 1, index)
        vbox.addLayout(grid)

        for inputs in self._inputs["sweep_inputs"]:
            label = QtGui.QLabel()
            label.setText(inputs[-1] + ":")
            font = QtGui.QFont()
            font.setBold(True)
            label.setFont(font)
            vbox.addWidget(label)
            hbox = QtGui.QHBoxLayout()
            for name in inputs[1:-1]:
                if not isinstance(getattr(self, name), self.NO_LABEL_INPUTS):
                    label = QtGui.QLabel(self, width=1)
                    label.setText("%s:" % parameters[name].name)
                    hbox.addWidget(label)
                input_box = getattr(self, name)
                hbox.addWidget(input_box)
                hbox.addStretch()
            vbox.addLayout(hbox)

            self.setLayout(vbox)

        directory_inputs = [self._inputs["directory_inputs"]]
        frequency_inputs = [
            inputs[1] for inputs in self._inputs["frequency_inputs"]
        ]
        sweep_inputs = [
            item for inputs in self._inputs["sweep_inputs"]
            for item in inputs[1:-1]
        ]

        self._inputs = directory_inputs + frequency_inputs + sweep_inputs
 def _layout(self):
     if len(self.labels) > 1:
         width = 60
         vbox = QtGui.QVBoxLayout(self)
         vbox.setSpacing(6)
         left, top, right, bottom = vbox.getContentsMargins()
         vbox.setContentsMargins(left, top // 2, right, bottom // 2)
         if self.parameter.name:
             label = QtGui.QLabel(self)
             label.setText("%s:" % self.parameter.name)
             vbox.addWidget(label)
         for index, row in enumerate(self.rows):
             hbox = QtGui.QHBoxLayout()
             try:
                 label = QtGui.QLabel(self)
                 label.setText("%s" % self.labels[index])
                 hbox.addWidget(label)
             except IndexError:
                 pass
             for input in row:
                 input.setFixedWidth(width)
                 hbox.addWidget(input)
                 label = QtGui.QLabel(self)
                 label.setText(input._parameter.name)
                 hbox.addWidget(label)
             hbox.addStretch()
             vbox.addLayout(hbox)
         self.setLayout(vbox)
         self.setFrameShape(QtGui.QFrame.Panel)
         self.setFrameShadow(QtGui.QFrame.Raised)
         self.setLineWidth(3)
     else:
         width = 60
         hbox = QtGui.QHBoxLayout(self)
         left, top, right, bottom = hbox.getContentsMargins()
         hbox.setContentsMargins(0, top // 2, 0, bottom // 2)
         label = QtGui.QLabel(self)
         label.setText("%s:" % self.parameter.name)
         hbox.addWidget(label)
         for input in self.rows[0]:
             input.setFixedWidth(width)
             hbox.addWidget(input)
             label = QtGui.QLabel(self)
             label.setText(input._parameter.name)
             hbox.addWidget(label)
         hbox.addStretch()
         self.setLayout(hbox)
    def _layout(self):
        vbox = QtGui.QVBoxLayout(self)
        vbox.setSpacing(6)
        left, top, right, bottom = vbox.getContentsMargins()
        vbox.setContentsMargins(left, top // 2, right, bottom // 2)

        label = QtGui.QLabel(self)
        label.setText(self.parameter.name + ":")
        vbox.addWidget(label)

        vbox.addWidget(self.take_noise)
        hbox = QtGui.QHBoxLayout()
        label = QtGui.QLabel(self)
        label.setText("%s:" % self.integration.parameter.name)
        hbox.addWidget(label)
        hbox.addWidget(self.integration)
        vbox.addLayout(hbox)
        hbox = QtGui.QHBoxLayout()
        label = QtGui.QLabel(self)
        label.setText("%s:" % self.n_int.parameter.name)
        hbox.addWidget(label)
        hbox.addWidget(self.n_int)
        vbox.addLayout(hbox)

        if self._populate_off_resonance:
            vbox.addWidget(self.off_resonance)
            hbox = QtGui.QHBoxLayout()
            label = QtGui.QLabel(self)
            label.setText("%s:" % self.offset.parameter.name)
            hbox.addWidget(label)
            hbox.addWidget(self.offset)
            vbox.addLayout(hbox)

            hbox = QtGui.QHBoxLayout()
            label = QtGui.QLabel(self)
            label.setText("%s:" % self.n_off.parameter.name)
            hbox.addWidget(label)
            hbox.addWidget(self.n_off)
            vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.setFrameShape(QtGui.QFrame.Panel)
        self.setFrameShadow(QtGui.QFrame.Raised)
        self.setLineWidth(3)
Exemple #4
0
 def _add_widget(self, name, vbox):
     indicators = self._procedure.indicator_objects
     widget = getattr(self, name)
     hbox = QtGui.QHBoxLayout()
     if not isinstance(widget, self.NO_LABEL_INPUTS):
         label = QtGui.QLabel(self)
         label.setText("%s:" % indicators[name].name)
         hbox.addWidget(label)
     hbox.addWidget(widget)
     vbox.addLayout(hbox)
Exemple #5
0
 def _add_widget(self, name, vbox):
     parameters = self._procedure.parameter_objects()
     widget = getattr(self, name)
     hbox = QtGui.QHBoxLayout()
     if not isinstance(widget, self.NO_LABEL_INPUTS):
         label = QtGui.QLabel(self)
         label.setText("%s:" % parameters[name].name)
         hbox.addWidget(label)
     hbox.addWidget(widget)
     vbox.addLayout(hbox)
     vbox.addStretch(0)
    def _layout(self):
        width = 60
        hbox = QtGui.QHBoxLayout(self)
        hbox.setContentsMargins(0, 0, 0, 0)
        hbox.addStretch()
        hbox.addWidget(self.vary)

        self.guess.setFixedWidth(width)
        hbox.addWidget(self.guess)
        label = QtGui.QLabel(self)
        label.setText("guess")
        hbox.addWidget(label)

        self.min.setFixedWidth(width)
        hbox.addWidget(self.min)
        label = QtGui.QLabel(self)
        label.setText("min")
        hbox.addWidget(label)

        self.max.setFixedWidth(width)
        hbox.addWidget(self.max)
        label = QtGui.QLabel(self)
        label.setText("max")
        hbox.addWidget(label)
Exemple #7
0
    def add_tab(self, name, instrument):
        vbox = QtGui.QVBoxLayout()
        for label, method, arguments in instrument.CONTROL:
            hbox = QtGui.QHBoxLayout()
            label_widget = QtGui.QLabel(label + ":")
            hbox.addWidget(label_widget)
            hbox.addStretch()
            inputs = []
            for argument in arguments:
                if argument[0] is not float:
                    raise ValueError(
                        "Non-float arguments are not implemented yet.")
                inputs.append(QtGui.QDoubleSpinBox())
                if len(argument) > 1 and argument[1]:
                    inputs[-1].setPrefix(argument[1])
                if len(argument) > 2 and argument[2]:
                    inputs[-1].setSuffix(argument[2])
                if len(argument) > 3 and (argument[3] or argument[3] == 0):
                    inputs[-1].setDecimals(argument[3])
                if len(argument) > 4 and (argument[4] or argument[4] == 0):
                    inputs[-1].setMaximum(argument[4])
                if len(argument) > 5 and (argument[5] or argument[5] == 0):
                    inputs[-1].setMinimum(argument[5])
                hbox.addWidget(inputs[-1])

            def evaluate(inst, func, values):
                def run():
                    try:
                        getattr(inst, func)(*[v.value() for v in values])
                    except Exception as error:
                        logging.exception(error)
                        raise error

                thread = threading.Thread(target=run)
                thread.start()

            write = QtGui.QPushButton()
            write.setText("Send Command")
            write.clicked.connect(partial(evaluate, instrument, method,
                                          inputs))
            hbox.addWidget(write)
            vbox.addLayout(hbox)
        vbox.addStretch()
        tab_widget = QtGui.QWidget()
        tab_widget.setLayout(vbox)
        self.tab.addTab(tab_widget, name)
    def __init__(self, parameter, parent=None, **kwargs):
        self.button = QtGui.QPushButton("Find")
        self.button.clicked.connect(self.get_file)
        self.line_edit = QtGui.QLineEdit()
        self.label = QtGui.QLabel()

        if qt_min_version(5):
            super().__init__(parameter=parameter, parent=parent, **kwargs)
        else:
            QtGui.QWidget.__init__(self, parent=parent, **kwargs)
            inputs.Input.__init__(self, parameter)
        vbox = QtGui.QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        if parameter.name:
            self.label.setText(self.parameter.name + ":")
            vbox.addWidget(self.label)
        hbox = QtGui.QHBoxLayout()
        hbox.addWidget(self.button)
        hbox.addWidget(self.line_edit)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
    def _layout(self):
        if self.horizontal:
            box = QtGui.QHBoxLayout(self)
        else:
            box = QtGui.QVBoxLayout(self)

        box.setSpacing(6)
        left, top, right, bottom = box.getContentsMargins()
        box.setContentsMargins(left, top // 2, right, bottom // 2)
        if self.parameter.name:
            label = QtGui.QLabel(self)
            label.setText("%s:" % self.parameter.name)
            box.addWidget(label)
        for row in self.rows:
            if self.horizontal:
                box.addStretch()
            box.addWidget(row)

        self.setLayout(box)
        self.setFrameShape(QtGui.QFrame.Panel)
        self.setFrameShadow(QtGui.QFrame.Raised)
        self.setLineWidth(3)
Exemple #10
0
    def __init__(self, data_x, data_y, title='', refresh_time=2, **kwargs):
        super().__init__(**kwargs)
        self.setAutoFillBackground(False)
        self.setStyleSheet("background: #fff")
        self.setFrameShape(QtGui.QFrame.StyledPanel)
        self.setFrameShadow(QtGui.QFrame.Sunken)
        self.setMidLineWidth(1)

        self.data_x = data_x
        self.data_y = data_y

        self.coordinates = QtGui.QLabel(self)
        self.coordinates.setMinimumSize(QtCore.QSize(0, 20))
        self.coordinates.setStyleSheet("background: #fff")
        self.coordinates.setText("")
        self.coordinates.setAlignment(QtCore.Qt.AlignRight
                                      | QtCore.Qt.AlignTrailing
                                      | QtCore.Qt.AlignVCenter)
        self.plot_widget = pg.PlotWidget(
            background='w',
            title=title,
            axisItems={'bottom': TimeAxisItem(orientation='bottom')},
            **kwargs)
        self.plot = self.plot_widget.getPlotItem()
        self.curve = self.plot.plot(pen='k')
        self.crosshairs = Crosshairs(self.plot,
                                     pen=pg.mkPen(color='#AAAAAA',
                                                  style=QtCore.Qt.DashLine))
        self.crosshairs.coordinates.connect(self.update_coordinates)

        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(refresh_time * 1000)

        vbox = QtGui.QVBoxLayout(self)
        vbox.addWidget(self.plot_widget)
        vbox.addWidget(self.coordinates)
        self.setLayout(vbox)