qdsfit/ConductivityWidget.py

77 lines
3.0 KiB
Python

# -*- 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]))