Skip to content
Snippets Groups Projects
Commit f98742e7 authored by Alexandros Asonitis's avatar Alexandros Asonitis
Browse files

Better control over the widgets in pyqt

parent 1baf1040
No related branches found
No related tags found
No related merge requests found
......@@ -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()
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)
# create the actual widgets
self.wafer = QLineEdit()
self.comment = QLineEdit()
self.sample = QLineEdit()
self.field = QLineEdit()
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.temperature = QSpinBox()
self.temperature.setRange(0,2**31-1)
self.temperature.setValue(295)
sample_information.setLayout(sample_grid)
app_grid.addWidget(sample_information,0,0)
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)
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()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment