def _setup_ui(self): self.log_widget = LogWidget() self.log.addHandler( self.log_widget.handler) # needs to be in Qt context? log.info("ManagedWindow connected to logging") self.queue_button = QtGui.QPushButton('Queue', self) self.queue_button.clicked.connect(self.queue) self.abort_button = QtGui.QPushButton('Abort', self) self.abort_button.setEnabled(False) self.abort_button.clicked.connect(self.abort) #self.queue_button = QtGui.QPushButton('Set', self) #self.queue_button.clicked.connect(self.procedure.refresh_parameters()) self.plot_widget = PlotWidget(self.procedure_class.DATA_COLUMNS, self.x_axis, self.y_axis) self.plot = self.plot_widget.plot self.browser_widget = BrowserWidget(self.procedure_class, self.displays, [self.x_axis, self.y_axis], parent=self) self.browser_widget.show_button.clicked.connect(self.show_experiments) self.browser_widget.hide_button.clicked.connect(self.hide_experiments) self.browser_widget.clear_button.clicked.connect( self.clear_experiments) self.browser_widget.open_button.clicked.connect(self.open_experiment) self.browser = self.browser_widget.browser self.browser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.browser.customContextMenuRequested.connect(self.browser_item_menu) self.browser.itemChanged.connect(self.browser_item_changed) self.inputs = InputsWidget(self.procedure_class, self.inputs, parent=self) self.manager = Manager(self.plot, self.browser, log_level=self.log_level, parent=self) self.manager.abort_returned.connect(self.abort_returned) self.manager.queued.connect(self.queued) self.manager.running.connect(self.running) self.manager.finished.connect(self.finished) self.manager.log.connect(self.log.handle)
def _setup_ui(self): """ Loads custom QT UI for center calibration """ super()._setup_ui() self.stop_button = QtGui.QPushButton('Stop', self) self.queue_button.clicked.connect(self.stop) self.inputs.hide() self.run_directory = os.path.dirname(os.path.realpath(__file__)) self.inputs = fromUi(os.path.join(self.run_directory, 'temp_control_gui.ui'))
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 _setup_ui(self): main_menu = self.menuBar() file_menu = main_menu.addMenu('Options') load_configuration = QtGui.QAction("Load Configuration", self) load_configuration.triggered.connect(self.load_config) file_menu.addAction(load_configuration) save_as_default = QtGui.QAction("Save Current Settings as Default", self) save_as_default.triggered.connect(self.save_as_default) file_menu.addAction(save_as_default) if self.HAS_DAQ: instrument_control = QtGui.QAction("Instrument Control", self) instrument_control.triggered.connect(self.open_instrument_control) file_menu.addAction(instrument_control) self.log_widget = LogWidget() self.log.addHandler( self.log_widget.handler) # needs to be in Qt context? log.info("ManagedWindow connected to logging") self.queue_button = QtGui.QPushButton('Queue', self) self.queue_button.clicked.connect(self.queue) self.abort_button = QtGui.QPushButton('Abort', self) self.abort_button.setEnabled(False) self.abort_button.clicked.connect(self.abort) self.abort_all_button = QtGui.QPushButton('Abort All', self) self.abort_all_button.setEnabled(False) self.abort_all_button.clicked.connect(self.abort_all) self.plot_widget = [] self.plot = [] for index, plot_widget in enumerate(self.plot_widget_classes): self.plot_widget.append( plot_widget(self.procedure_class.DATA_COLUMNS, x_axes=self.x_axes[index], y_axes=self.y_axes[index], x_label=self.x_labels[index], y_label=self.y_labels[index], legend_text=self.legend_text[index], color_cycle=self.color_cycle)) self.plot.append(self.plot_widget[-1].plot) measured_quantities = [ item for x_axis in self.x_axes for item in x_axis ] measured_quantities.extend( [item for y_axis in self.y_axes for item in y_axis]) quantities = [] for item in measured_quantities: if isinstance(item, (list, tuple)): quantities.extend(item) else: quantities.append(item) self.browser_widget = BrowserWidget(self.procedure_class, self.displays, quantities, parent=self) self.browser_widget.show_button.clicked.connect(self.show_experiments) self.browser_widget.hide_button.clicked.connect(self.hide_experiments) self.browser_widget.clear_button.clicked.connect( self.clear_experiments) self.browser_widget.open_button.clicked.connect(self.open_experiment) self.browser = self.browser_widget.browser self.browser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.browser.customContextMenuRequested.connect(self.browser_item_menu) self.browser.itemChanged.connect(self.browser_item_changed) self.inputs = InputsWidget(self.procedure_class, self.inputs, parent=self) self.manager = Manager(self.plot, self.browser, log_level=self.log_level, parent=self) self.manager.abort_returned.connect(self.abort_returned) self.manager.queued.connect(self.queued) self.manager.running.connect(self.running) self.manager.finished.connect(self.finished) self.manager.failed.connect(self.failed) self.manager.log.connect(self.log.handle) self.indicators = IndicatorsWidget(self.procedure_class)