import sys from datetime import datetime from pylablib.devices import Thorlabs from pymeasure.experiment import unique_filename from pymeasure.experiment import Results from pymeasure.display.Qt import QtWidgets import logging from src.classes.ui import UIWindown from src.classes.controltab import ControlTab from src.procedures import B_Sweep, X_Sweep, Y_Sweep log = logging.getLogger('') log.addHandler(logging.NullHandler()) class MainWindow(UIWindown): def __init__(self): super().__init__( procedure_class=[B_Sweep, X_Sweep, Y_Sweep], inputs=[ ['acq_time', 'freq', 'b_min', 'b_max', 'b_step', 'x', 'y'], ['acq_time', 'freq', 'x_min', 'x_max', 'x_step', 'y', 'field'], ['acq_time', 'freq', 'y_min', 'y_max', 'y_step', 'x', 'field'] ], displays=['acq_time', 'freq'], x_axis='X Position', y_axis='Voltage', widget_list=tuple([ControlTab("Manual control")]), directory_input=True ) self.setWindowTitle('Mini MOKE') self.directory = 'data' try: for device in Thorlabs.list_kinesis_devices(): log.info(f"Thorlab device connected: {device[1]} with serial number: {device[0]}") except: pass def queue(self, procedure=None): direc = self.directory + '/' + datetime.now().strftime('%Y-%m') if procedure is None: procedure = self.make_procedure() file = unique_filename(direc, procedure.name+"_") results = Results(procedure, file) experiment = self.new_experiment(results) self.manager.queue(experiment) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())