38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
|
__author__ = 'markusro'
|
||
|
|
||
|
from PyQt4.QtGui import *
|
||
|
from PyQt4.QtCore import QRegExp
|
||
|
import PeakWidget
|
||
|
|
||
|
|
||
|
class LogFSpinBox(QDoubleSpinBox):
|
||
|
scientificNotationValidator = QRegExpValidator(QRegExp("[+-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?"))
|
||
|
|
||
|
def __init__(self, parent = None):
|
||
|
super(LogFSpinBox, self).__init__(parent)
|
||
|
self.setRange(1e-16,1e16)
|
||
|
self.setMinimum(1e-16)
|
||
|
self.setDecimals(17)
|
||
|
self.setValue(1.0)
|
||
|
def stepBy(self, up_down):
|
||
|
print self.minimum(),self.maximum()
|
||
|
if self.value() != 0.0:
|
||
|
self.setValue(self.value()*10**(up_down/9.0)) # 19 steps per decade
|
||
|
|
||
|
def textFromValue(self, value):
|
||
|
return "%.3e"%value
|
||
|
|
||
|
def valueFromText(self, str_value):
|
||
|
return str_value.toDouble()[0]
|
||
|
|
||
|
def validate(self, str_value, p_int):
|
||
|
return self.scientificNotationValidator.validate(str_value, p_int)
|
||
|
|
||
|
class ParameterWidget(QWidget):
|
||
|
def __init__(self, parent = None):
|
||
|
super(ParameterWidget, self).__init__(parent)
|
||
|
layout = QGridLayout(self)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
app = QApplication([])
|