def home(self): # Create channel voltage, divider and offset boxes and buttons win4 = QWidget(self) lay4 = QGridLayout(win4) vpp = QLabel(self) vpp.setText('Vpp') offset = QLabel(self) offset.setText('Offset') lay4.addWidget(vpp, 0, 1, 1, 1) lay4.addWidget(offset, 0, 2, 1, 1) number_channels = 4 chlabel = list(range(number_channels)) chbox = list(range(number_channels)) offbox = list(range(number_channels)) for i in range(number_channels): chlabel[i] = QLabel(self) chlabel[i].setText('Ch%d' % (i + 1)) chbox[i] = QLineEdit(self) chbox[i].setText('4.5') offbox[i] = QLineEdit(self) offbox[i].setText('0') lay4.addWidget(chlabel[i], i + 1, 0, 1, 1) lay4.addWidget(chbox[i], i + 1, 1, 1, 1) lay4.addWidget(offbox[i], i + 1, 2, 1, 1) win4.move(10, 75) # Continuous sequence? contseq = QWidget(self) lay_contseq = QGridLayout(contseq) contseqboxlabel = QLabel(self) contseqboxlabel.setText('Simple continuous element?') contseqboxlabel.resize(contseqboxlabel.minimumSizeHint()) contseqbox = QCheckBox(self) lay_contseq.addWidget(contseqboxlabel, 0, 0, 1, 1) lay_contseq.addWidget(contseqbox, 0, 1, 1, 1) contseq.move(20, 280) # Upload to AWG # Function uploadbtn = QPushButton('Upload To AWG', self) uploadbtn.clicked.connect(lambda state: self.uploadToAWG( str(Choose_awg.currentText()), chbox)) # Choose awg Choose_awg = QComboBox(self) Choose_awg.addItem('AWG5014') Choose_awg.addItem('AWG5208') # Update sequencing parameters: table and update button win2 = QWidget(self) lay2 = QVBoxLayout(win2) seqtable = QTableWidget(4, 4, self) seqtable.setColumnCount(4) # Set top headers hlist = ["TrigWait", "NumReps", "JumpTarget", "Goto"] for i in range(len(hlist)): seqtable.setColumnWidth(i, 70) seqtable.setHorizontalHeaderItem(i, QTableWidgetItem(hlist[i])) seqtable.setRowCount(0) updateseqbtn = QPushButton('Update sequence', self) updateseqbtn.clicked.connect( lambda state: self.changedSeqTable(seqtable)) updateseqbtn.resize(updateseqbtn.minimumSizeHint()) lay2.addWidget(seqtable) lay2.addWidget(updateseqbtn) win2.move(450, 30) win2.resize(win2.minimumSizeHint()) # Update sequencing parameters: do this? changeseqbox = QCheckBox(self) changeseqbox.move(630, 10) changeseqbox.stateChanged.connect(lambda state: self.seqchangeWidget( changeseqbox, win2, seqtable, seqpts)) changeseqboxlabel = QLabel(self) changeseqboxlabel.setText('Change sequencing options?') changeseqboxlabel.move(450, 10) changeseqboxlabel.resize(changeseqboxlabel.minimumSizeHint()) # Build Sequence and take parameters win3 = QWidget(self) lay3 = QGridLayout(win3) buildseqlabel = QLabel(self) buildseqlabel.setText('Select a parameter to build the sequence:') buildseqlabel.resize(buildseqlabel.minimumSizeHint()) buildseqbtn = QPushButton('Build sequence', self) buildseqbtn.clicked.connect(lambda state: self.buildSequenceWrap( chbox, offbox, contseqbox, timevoltbox, whichpulse, sparambox, seqstart, seqstop, seqpts)) buildseqbtn.resize(buildseqbtn.minimumSizeHint()) buildseqbtn.move(350, 100) # Native and special parameters timevoltbox = QComboBox(self) timevoltbox.addItem("Time") for i in range(number_channels): timevoltbox.addItem("Ch%{} Voltage".format(i)) whichpulse = QLineEdit(self) whichpulse.setText('Which pulse?') whichpulse.resize(whichpulse.sizeHint()) sparambox = QComboBox(self) sparambox.addItem("-Special-") for i in range(len(params)): sparambox.addItem(params[i]) # Start/stop and build lay32 = QHBoxLayout() lay32.addStretch() startslabel = QLabel(self) startslabel.setText('Start:') stopslabel = QLabel(self) stopslabel.setText('Stop:') pointsslabel = QLabel(self) pointsslabel.setText('Points:') seqstart = QLineEdit(self) seqstart.setText('0') seqstart.resize(seqstart.minimumSizeHint()) seqstop = QLineEdit(self) seqstop.setText('0') seqstop.resize(seqstop.minimumSizeHint()) seqpts = QLineEdit(self) seqpts.setText('0') seqpts.resize(seqpts.minimumSizeHint()) lay3.addWidget(buildseqlabel, 0, 0, 1, 3) lay3.addWidget(timevoltbox, 1, 0, 1, 1) lay3.addWidget(whichpulse, 1, 1, 1, 1) lay3.addWidget(sparambox, 1, 2, 1, 1) lay3.addWidget(startslabel, 2, 0, 1, 1) lay3.addWidget(stopslabel, 2, 1, 1, 1) lay3.addWidget(pointsslabel, 2, 2, 1, 1) lay3.addWidget(seqstart, 3, 0, 1, 1) lay3.addWidget(seqstop, 3, 1, 1, 1) lay3.addWidget(seqpts, 3, 2, 1, 1) lay3.addWidget(buildseqbtn, 4, 0, 1, 3) lay3.addWidget(uploadbtn, 5, 0, 1, 3) lay3.addWidget(Choose_awg, 6, 0, 1, 2) win3.move(10, 300) win3.resize(win3.minimumSizeHint()) #Element and sequence saving and loading #Functions win1 = QWidget(self) lay1 = QGridLayout(win1) # load sequence whichSeq = QLineEdit(self) whichSeq.setText('enter file name') #whichSeq.setGeometry(110,60,70,20) loadsbtn = QPushButton('Load Sequence', self) loadsbtn.clicked.connect( lambda state: self.loadSequence(whichSeq.text())) # save sequence SeqTo = QLineEdit(self) SeqTo.setText('enter file name') #SeqTo.setGeometry(20,60,70,20) savesbtn = QPushButton('Save Sequence', self) savesbtn.clicked.connect( lambda state: self.gseq.write_to_json(SeqTo.text())) # plot sequence plotsbtn = QPushButton('Plot Sequence', self) plotsbtn.clicked.connect(lambda state: plotter(self.gseq)) lay1.addWidget(savesbtn, 0, 0) lay1.addWidget(loadsbtn, 0, 1) lay1.addWidget(plotsbtn, 0, 2) lay1.addWidget(SeqTo, 1, 0) lay1.addWidget(whichSeq, 1, 1) win1.move(10, 0) win1.resize(win1.minimumSizeHint()) #AWG Panel stuff # Create channel voltage, divider and offset boxes and buttons #Divider linked to base GUI!! win5 = QWidget(self) lay5 = QGridLayout(win5) awgframeh = QFrame(self) awgframeh.setFrameShape(QFrame.Shape(0x0004)) #awgframeh2=QFrame(self); #awgframeh2.setFrameShape(QFrame.Shape(0x0004)); awgframev = QFrame(self) awgframev.setFrameShape(QFrame.Shape(0x0005)) lay5.addWidget(awgframeh, 0, 0, 1, 6) lay5.addWidget(awgframev, 0, 0, 7, 1) awglabel = QLabel(self) awglabel.setText('AWG Tools:') allonlabel = QLabel(self) allonlabel.setText('All on:') allonbox = QCheckBox(self) allonbox.stateChanged.connect(lambda state: self.runChan( allonbox, 0, str(Choose_awg.currentText()))) achlabel1 = 'Ch1' achlabel2 = 'Ch2' achlabel3 = 'Ch3' achlabel4 = 'Ch4' achlabel = [achlabel1, achlabel2, achlabel3, achlabel4] for i in range(len(achlabel)): achlabel[i] = QLabel(self) achlabel[i].setText('Ch%d' % (i + 1)) avpp = QLabel(self) avpp.setText('Vpp') aoffset = QLabel(self) aoffset.setText('Offset') aoutput = QLabel(self) aoutput.setText('Output') achbox1 = QLineEdit(self) achbox2 = QLineEdit(self) achbox3 = QLineEdit(self) achbox4 = QLineEdit(self) achbox = [achbox1, achbox2, achbox3, achbox4] aoffbox1 = QLineEdit(self) aoffbox2 = QLineEdit(self) aoffbox3 = QLineEdit(self) aoffbox4 = QLineEdit(self) aoffbox = [aoffbox1, aoffbox2, aoffbox3, aoffbox4] aoutbox1 = QCheckBox(self) aoutbox2 = QCheckBox(self) aoutbox3 = QCheckBox(self) aoutbox4 = QCheckBox(self) aoutbox = [aoutbox1, aoutbox2, aoutbox3, aoutbox4] aoutbox1.stateChanged.connect(lambda state: self.runChan( aoutbox1, 1, str(Choose_awg.currentText()))) aoutbox2.stateChanged.connect(lambda state: self.runChan( aoutbox2, 2, str(Choose_awg.currentText()))) aoutbox3.stateChanged.connect(lambda state: self.runChan( aoutbox3, 3, str(Choose_awg.currentText()))) aoutbox4.stateChanged.connect(lambda state: self.runChan( aoutbox4, 4, str(Choose_awg.currentText()))) runAWGtn = QPushButton('Run AWG', self) runAWGtn.clicked.connect( lambda state: self.runAWG(str(Choose_awg.currentText()))) lay5.addWidget(awglabel, 1, 1, 1, 1) lay5.addWidget(runAWGtn, 1, 2, 1, 1) for i in range(len(achbox)): achbox[i].setText('4.5') aoffbox[i].setText('0') lay5.addWidget(achbox[i], i + 3, 2, 1, 1) lay5.addWidget(achlabel[i], i + 3, 1, 1, 1) lay5.addWidget(aoffbox[i], i + 3, 3, 1, 1) lay5.addWidget(aoutbox[i], i + 3, 4, 1, 1) lay5.addWidget(avpp, 2, 2, 1, 1) lay5.addWidget(aoffset, 2, 3, 1, 1) lay5.addWidget(aoutput, 2, 4, 1, 1) lay5.addWidget(allonlabel, 1, 3, 1, 1) lay5.addWidget(allonbox, 1, 4, 1, 1) win5.resize(win5.minimumSizeHint()) win5.move(450, 270) #Filter Correction filtbtn = QPushButton('Filter correction', self) hfiltboxlabel = QLabel(self) hfiltboxlabel.setText('High pass (us):') hfiltboxlabel.resize(hfiltboxlabel.minimumSizeHint()) hfiltboxlabel.move(20, 235) lfiltboxlabel = QLabel(self) lfiltboxlabel.setText('Low pass (us):') lfiltboxlabel.resize(lfiltboxlabel.minimumSizeHint()) lfiltboxlabel.move(170, 235) hfiltbox = QLineEdit(self) hfiltbox.setText('80') hfiltbox.resize(hfiltbox.minimumSizeHint()) hfiltbox.move(20, 250) lfiltbox = QLineEdit(self) lfiltbox.setText('-') lfiltbox.resize(lfiltbox.minimumSizeHint()) lfiltbox.move(170, 250) filtbtn.clicked.connect( lambda state: self.filterCorrection(hfiltbox, lfiltbox)) filtbtn.resize(filtbtn.minimumSizeHint()) filtbtn.move(320, 250) self.show() win2.hide()