diff --git a/hp4194/cv_qt_inteface.py b/hp4194/cv_qt_inteface.py index 10ec0c49d24ab6cc329722ec54ad0eb2507ecf61..9fa3f8f0ac1b1e7f88ab548173adab39b39dcabf 100644 --- a/hp4194/cv_qt_inteface.py +++ b/hp4194/cv_qt_inteface.py @@ -17,87 +17,187 @@ class MainWinow(QMainWindow): def __init__(self): super().__init__() - widget = QWidget() # Abstarct main widget - app_grid = QGridLayout() # App Layout + self.widget = QWidget() # Abstarct main widget + self.app_grid = QGridLayout() # App Layout - sample_information= QGroupBox("Sample Information") - sample_grid = QGridLayout() + self.sample_information= QGroupBox("Sample Information") # keep a self reference for later + self.sample_grid = QGridLayout() + + # create the actual widgets + self.wafer = QLineEdit() + self.comment = QLineEdit() + self.sample = QLineEdit() + self.field = QLineEdit() + + self.temperature = QSpinBox() + self.temperature.setRange(0,2**31-1) + self.temperature.setValue(295) - sample_grid.addWidget(QLabel("Wafer"),0,0) - sample_grid.addWidget(QLineEdit(),1,0) - sample_grid.addWidget(QLabel("Sample"),2,0) - sample_grid.addWidget(QLineEdit(),3,0) - sample_grid.addWidget(QLabel("Field"),4,0) - sample_grid.addWidget(QLineEdit(),5,0) - sample_grid.addWidget(QLabel("Comment"),0,1) - sample_grid.addWidget(QLineEdit(),1,1) - sample_grid.addWidget(QLabel("Temperature (K)"),4,1) - sample_grid.addWidget(QSpinBox(),5,1) + self.sample_grid.addWidget(QLabel("Wafer"),0,0) + self.sample_grid.addWidget(self.wafer,1,0) + self.sample_grid.addWidget(QLabel("Sample"),2,0) + self.sample_grid.addWidget(self.sample,3,0) + self.sample_grid.addWidget(QLabel("Field"),4,0) + self.sample_grid.addWidget(self.field,5,0) + self.sample_grid.addWidget(QLabel("Comment"),0,1) + self.sample_grid.addWidget(self.comment,1,1) + self.sample_grid.addWidget(QLabel("Temperature (K)"),4,1) + self.sample_grid.addWidget(self.temperature,5,1) - sample_information.setLayout(sample_grid) - app_grid.addWidget(sample_information,0,0) + self.sample_information.setLayout(self.sample_grid) + self.app_grid.addWidget(self.sample_information,0,0) # Measuring parameters - parameters = QGroupBox("Measurement Parameters") - parameters_grid = QVBoxLayout() - - parameters_grid.addWidget(QLabel("U_start")) - parameters_grid.addWidget(QDoubleSpinBox()) - parameters_grid.addWidget(QLabel("U_stop")) - parameters_grid.addWidget(QDoubleSpinBox()) - parameters_grid.addWidget(QLabel("U_step")) - parameters_grid.addWidget(QDoubleSpinBox()) - parameters_grid.addWidget(QLabel("Wait in voltage point")) - parameters_grid.addWidget(QDoubleSpinBox()) - parameters_grid.addWidget(QLabel("Area of the test structure")) - parameters_grid.addWidget(QDoubleSpinBox()) - parameters_grid.addWidget(QLabel("Observed frequency point")) - parameters_grid.addWidget(QSpinBox()) - parameters_grid.addWidget(QLabel("Observed voltage point")) - parameters_grid.addWidget(QSpinBox()) - - parameters.setLayout(parameters_grid) - app_grid.addWidget(parameters,1,0) + self.parameters = QGroupBox("Measurement Parameters") + self.parameters_grid = QVBoxLayout() + + #create the widgets + self.v_start = QDoubleSpinBox() + self.v_start.setDecimals(3) + self.v_start.setRange(-40,40) + self.v_start.setValue(1) + + self.v_stop = QDoubleSpinBox() + self.v_stop.setDecimals(3) + self.v_stop.setRange(-40,40) + self.v_stop.setValue(-3) + + self.v_step = QDoubleSpinBox() + self.v_step.setDecimals(3) + self.v_step.setRange(-80,80) + self.v_step.setValue(0.1) + + self.wait = QDoubleSpinBox() + self.wait.setDecimals(3) + self.wait.setRange(0,sys.float_info.max) + self.wait.setValue(0) + + self.radius= QSpinBox() + self.radius.setRange(0,2**31-1) + self.radius.setValue(50) + + self.f_point= QSpinBox() # Observed frequency point + self.f_point.setRange(1,2**31-1) + self.f_point.setValue(1) + + self.v_point = QSpinBox() # observed voltage point + self.v_point.setRange(1,2**31-1) + self.v_point.setValue(1) + + self.hysterisis = QCheckBox("Measure Hysteris") + self.hysterisis.setChecked(False) + + + # Create the second grid + self.parameters_grid.addWidget(QLabel("V_start (V)")) + self.parameters_grid.addWidget(self.v_start) + self.parameters_grid.addWidget(QLabel("V_stop (V)")) + self.parameters_grid.addWidget(self.v_stop) + self.parameters_grid.addWidget(QLabel("V_step (V)")) + self.parameters_grid.addWidget(self.v_step) + self.parameters_grid.addWidget(QLabel("Wait in voltage point (s)")) + self.parameters_grid.addWidget(self.wait) + self.parameters_grid.addWidget(QLabel("Radius of the test structure (um)")) + self.parameters_grid.addWidget(self.radius) + self.parameters_grid.addWidget(QLabel("Observed frequency point")) + self.parameters_grid.addWidget(self.f_point) + self.parameters_grid.addWidget(QLabel("Observed voltage point")) + self.parameters_grid.addWidget(self.v_point) + self.parameters_grid.addWidget(self.hysterisis) + + + self.parameters.setLayout(self.parameters_grid) + self.app_grid.addWidget(self.parameters,1,0) # Sweep Parameters - sweep = QGroupBox("Sweep Parameters") - sweep_grid = QGridLayout() - - sweep_grid.addWidget(QLabel("Number of frequency points"),0,0) - sweep_grid.addWidget(QSpinBox(),1,0) - sweep_grid.addWidget(QLabel("f_start (Hz)"),2,0) - sweep_grid.addWidget(QDoubleSpinBox(),3,0) - sweep_grid.addWidget(QLabel("f_stop (Hz)"),4,0) - sweep_grid.addWidget(QDoubleSpinBox(),5,0) - sweep_grid.addWidget(QLabel("Sweep Type"),6,0) # here sweep direction - sweep_grid.addWidget(QComboBox(),7,0) - sweep_grid.addWidget(QLabel("Integration Time"),8,0) - sweep_grid.addWidget(QComboBox(),9,0) - - sweep_grid.addWidget(QLabel("Delay(ms)"),0,1) - sweep_grid.addWidget(QDoubleSpinBox(),1,1) - sweep_grid.addWidget(QLabel("Delay Apperture"),2,1) - sweep_grid.addWidget(QDoubleSpinBox(),3,1) - - sweep_grid.addWidget(QLabel("Sweep direction"),6,1) - sweep_grid.addWidget(QComboBox(),7,1) - sweep_grid.addWidget(QLabel("Averaging Number"),8,1) - sweep_grid.addWidget(QComboBox(),9,1) - - sweep.setLayout(sweep_grid) - app_grid.addWidget(sweep,2,0) + self.sweep = QGroupBox("Sweep Parameters") + self.sweep_grid = QGridLayout() + + #create the widgets + self.points = QDoubleSpinBox() + self.points.setDecimals(3) + self.points.setRange(1,401) + self.points.setValue(4) + + + self.f_start = QDoubleSpinBox() + self.f_start.setDecimals(3) + self.f_start.setRange(100,40e6) + self.f_start.setValue(100000) + + self.f_stop = QDoubleSpinBox() + self.f_stop.setDecimals(3) + self.f_stop.setRange(100,40e6) + self.f_stop.setValue(1000000) + + self.osc = QDoubleSpinBox() + self.osc.setDecimals(3) + self.osc.setRange(10e-3,1) + self.osc.setValue(0.5) + + self.sweep_type = QComboBox() + self.sweep_type.insertItems(0,["Logarithmic","Linear"]) + self.sweep_type.setCurrentText("Linear") + + self.integration = QComboBox() + self.integration.insertItems(0,["Short","Medium","Long"]) + self.integration.setCurrentText("Medium") + + self.delay = QDoubleSpinBox() + self.delay.setDecimals(3) + self.delay.setRange(0,3.6e6) + self.delay.setValue(0) + + self.apperture = QDoubleSpinBox() + self.apperture.setDecimals(3) + self.apperture.setRange(0.5,100) + self.apperture.setValue(0.5) + + self.sweep_direction = QComboBox() + self.sweep_direction.insertItems(0,["Up","Down"]) + self.sweep_direction.setCurrentText("Up") + + self.averaging = QComboBox() + self.averaging.insertItems(0,[str(2**i) for i in range(9)]) + self.averaging.setCurrentText("4") + + self.sweep_grid.addWidget(QLabel("Number of frequency points"),0,0) + self.sweep_grid.addWidget(self.points,1,0) + self.sweep_grid.addWidget(QLabel("f_start (Hz)"),2,0) + self.sweep_grid.addWidget(self.f_start,3,0) + self.sweep_grid.addWidget(QLabel("f_stop (Hz)"),4,0) + self.sweep_grid.addWidget(self.f_stop,5,0) + self.sweep_grid.addWidget(QLabel("OSC level (V)"),6,0) + self.sweep_grid.addWidget(self.osc,7,0) + self.sweep_grid.addWidget(QLabel("Sweep Type"),8,0) # here sweep direction + self.sweep_grid.addWidget(self.sweep_type,9,0) + self.sweep_grid.addWidget(QLabel("Integration Time"),10,0) + self.sweep_grid.addWidget(self.integration,11,0) + + self.sweep_grid.addWidget(QLabel("Delay (ms)"),0,1) + self.sweep_grid.addWidget(self.delay,1,1) + self.sweep_grid.addWidget(QLabel("Delay Apperture (%)"),2,1) + self.sweep_grid.addWidget(self.apperture,3,1) + + self.sweep_grid.addWidget(QLabel("Sweep direction"),8,1) + self.sweep_grid.addWidget(self.sweep_direction,9,1) + self.sweep_grid.addWidget(QLabel("Averaging Number"),10,1) + self.sweep_grid.addWidget(self.averaging,11,1) + + self.sweep.setLayout(self.sweep_grid) + self.app_grid.addWidget(self.sweep,2,0) # add the plot below sc = MplCanvas(self,width=10,height=8,dpi=100) sc.axes.plot([0,1,2,3,4],[10,1,20,3,40]) - app_grid.addWidget(sc,0,1,3,1) + self.app_grid.addWidget(sc,0,1,3,1) - widget.setLayout(app_grid) - self.setCentralWidget(widget) - self.show() + self.widget.setLayout(self.app_grid) + self.setCentralWidget(self.widget) + self.showMaximized() app= QApplication(sys.argv) w= MainWinow()