# -*- encoding: utf-8 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * import ConductivityGroupBox class ConductivityWidget(QGroupBox): changedTable = pyqtSignal() def __init__(self, parent=None): QGroupBox.__init__(self) super(ConductivityWidget, self).__init__(parent) self.setTitle(u"Conductivity …") self.ui = ConductivityGroupBox.Ui_ConductivityGroupBox() self.ui.setupUi(self) self.lineEdits = [self.ui.lineEdit_1, self.ui.lineEdit_2, self.ui.lineEdit_3] self.fixedCheckBoxes = [self.ui.checkBox_1, self.ui.checkBox_2, self.ui.checkBox_3] 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.signalMapper.setMapping(button, i) button.clicked.connect(self.signalMapper.map) self.signalMapper.mapped.connect(self.changeValues) def changeValues(self, num): logstep = 10**0.05 # 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)) self.changedTable.emit() def fixedParameter(self): return [0 if cb.isChecked() else 1 for cb in self.fixedCheckBoxes] def setColor(self, color): r, g, b = color palette = self.palette() palette.setColor(QPalette.Foreground, QColor(r, g, b)) self.setPalette(palette) def getTable(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): for i, arg in enumerate(args): self.lineEdits[i].setText("%g" % (args[i]))