def __init__(self, *args, **kwargs):
     super(SpectraControlWidget, self).__init__(*args, **kwargs)
     self._energy = (kwargs.get('energy', None))
     self._energyMin = 0.
     self._energyMax = 1.
     self._intensityMax = 1.
     self._chi2 = np.nan
     self._spectra = []
     self._controls = []
     
     # Construct a summed spectrum
     self.summedSpectrum = SummedSpectrum()
     
     # Construct widgets
     self.parameterEdit = BoundedFloatParameterEdit(
                                         orientation=QtCore.Qt.Horizontal)
     addConstantButton = QtGui.QPushButton('Add Constant')
     addGaussianButton = QtGui.QPushButton('Add Gaussian')
     addLorentzianButton = QtGui.QPushButton('Add Lorentzian')
     addAsymmetricGaussianButton = QtGui.QPushButton('Add Asymmetric Gaussian')
     addWaveVectorConservingPLButton = (
                 QtGui.QPushButton('Add wave vector conserving PL'))
     addWaveVectorNonConservingPLButton = (
                 QtGui.QPushButton('Add wave vector non-conserving PL'))
     addConstantButton.setMinimumHeight(40)
     addGaussianButton.setMinimumHeight(40)
     addLorentzianButton.setMinimumHeight(40)
     addAsymmetricGaussianButton.setMinimumHeight(40)
     addWaveVectorConservingPLButton.setMinimumHeight(40)
     addWaveVectorNonConservingPLButton.setMinimumHeight(40)
     
     # Scroll area for the SpectrumWidgets
     scrollWidget = QtGui.QWidget()
     scroll = VerticalScrollArea()
     scroll.setWidget(scrollWidget)
     
     # Layout
     layout = QtGui.QVBoxLayout(self)
     layout.setSpacing(5)
     layout.addWidget(self.parameterEdit)
     layout.addWidget(scroll, stretch=1)
     self.scrollLayout = QtGui.QVBoxLayout(scrollWidget)
     self.scrollLayout.addStretch(1)
     layout.addWidget(addConstantButton)
     layout.addWidget(addGaussianButton)
     layout.addWidget(addLorentzianButton)
     layout.addWidget(addAsymmetricGaussianButton)
     layout.addWidget(addWaveVectorConservingPLButton)
     layout.addWidget(addWaveVectorNonConservingPLButton)
     
     # Connect signals and slots
     addConstantButton.clicked.connect(self.addConstantSpectrum)
     addGaussianButton.clicked.connect(self.addGaussianSpectrum)
     addLorentzianButton.clicked.connect(self.addLorentzianSpectrum)
     addAsymmetricGaussianButton.clicked.connect(self.addAsymmetricGaussianSpectrum)
     addWaveVectorConservingPLButton.clicked.connect(
                                 self.addWaveVectorConservingPLSpectrum)
     addWaveVectorNonConservingPLButton.clicked.connect(
                                 self.addWaveVectorNonConservingPLSpectrum)
    app = QtGui.QApplication([])
    w = QtGui.QWidget()
    s1 = ConstantSpectrum()
    s2 = GaussianSpectrum()
    s3 = LorentzianSpectrum()
    sc1 = SpectrumControlWidget(s1)
    # sc1.setStyleSheet("QObject { background-color: blue; }")
    sc2 = SpectrumControlWidget(s2)
    # sc2.setStyleSheet("QObject { background-color: red; }")
    sc3 = SpectrumControlWidget(s3)
    # sc3.setStyleSheet("QObject { background-color: green; }")
    layout = QtGui.QVBoxLayout(w)
    # layout.setSpacing(0)
    # layout.setContentsMargins(0, 0, 0, 0)
    layout.addWidget(sc1)
    layout.addWidget(sc2)
    layout.addWidget(sc3)
    layout.addStretch(1)
    # w.show()
    # w.raise_()
    scroll = VerticalScrollArea()
    scroll.setWidget(w)
    scroll.show()
    scroll.raise_()

    import sys

    if (sys.flags.interactive != 1) or not hasattr(QtCore, "PYQT_VERSION"):
        QtGui.QApplication.instance().exec_()