from PyQt4.QtCore import * from PyQt4.QtGui import * import PeakGroupBox class PeakWidget(QGroupBox): changedTable = pyqtSignal() def __init__(self, parent=None): QGroupBox.__init__(self) super(PeakWidget, self).__init__(parent) self.ui = PeakGroupBox.Ui_PeakGroupBox() self.ui.setupUi(self) self.lineEdits = [self.ui.lineEdit_1, self.ui.lineEdit_2, self.ui.lineEdit_3, self.ui.lineEdit_4] self.fixedCheckBoxes = [self.ui.checkBox_1, self.ui.checkBox_2, self.ui.checkBox_3, self.ui.checkBox_4] for le in self.lineEdits: le.editingFinished.connect(self.changedTable.emit) self.signalMapper = QSignalMapper(self) for i, button in enumerate([self.ui.pushButton_1, self.ui.pushButton_2, self.ui.pushButton_3, self.ui.pushButton_4, self.ui.pushButton_5, self.ui.pushButton_6, self.ui.pushButton_7, self.ui.pushButton_8, ]): self.signalMapper.setMapping(button,i) button.clicked.connect(self.signalMapper.map) self.signalMapper.mapped.connect(self.changeValues) def changeValues(self, num): logstep = 1.29154967 # 10 log even steps per decade linstep = 0.05 # 0-3 down/up for d_eps and tau, respectively # 4-7 down, up for a, b if num == 0: self.ui.lineEdit_1.setText("%.2e"%(self.ui.lineEdit_1.text().toDouble()[0]/logstep)) if num == 1: self.ui.lineEdit_1.setText("%.2e"%(self.ui.lineEdit_1.text().toDouble()[0]*logstep)) if num == 2: self.ui.lineEdit_2.setText("%.2e"%(self.ui.lineEdit_2.text().toDouble()[0]/logstep)) if num == 3: self.ui.lineEdit_2.setText("%.2e"%(self.ui.lineEdit_2.text().toDouble()[0]*logstep)) if num == 4: self.ui.lineEdit_3.setText("%.2e"%(self.ui.lineEdit_3.text().toDouble()[0]-linstep)) if num == 5: self.ui.lineEdit_3.setText("%.2e"%(self.ui.lineEdit_3.text().toDouble()[0]+linstep)) if num == 6: self.ui.lineEdit_4.setText("%.2e"%(self.ui.lineEdit_4.text().toDouble()[0]-linstep)) if num == 7: self.ui.lineEdit_4.setText("%.2e"%(self.ui.lineEdit_4.text().toDouble()[0]+linstep)) self.changedTable.emit() def fixedParameter(self): return [0 if cb.isChecked() else 1 for cb in self.fixedCheckBoxes] def setId(self,id): self.id=id self.setTitle("Peak %i"%id) def setColor(self, color): r,g,b = color palette = self.palette() palette.setColor(QPalette.Foreground, QColor(r,g,b)) self.setPalette(palette) def peakParameter(self): tmp = [i.text().toDouble()[0] # selects the number, ignores the status for i in self.lineEdits ] print "peakParams:",tmp return tmp def update(self): self.changedTable.emit() def updateTable(self, *args): print "updateTable", args for i,arg in enumerate(args): self.lineEdits[i].setText("%g"%(args[i]))