def createKnob(self, knobType): knob = Qwt.QwtKnob() knob.setTracking(True) if knobType == 0: knob.setKnobStyle(Qwt.QwtKnob.Sunken) knob.setMarkerStyle(Qwt.QwtKnob.Nub) knob.setWrapping(True) knob.setNumTurns(4) knob.setScaleStepSize(10.0) knob.setScale(0, 400) knob.setTotalSteps(400) elif knobType == 1: knob.setKnobStyle(Qwt.QwtKnob.Sunken) knob.setMarkerStyle(Qwt.QwtKnob.Dot) elif knobType == 2: knob.setKnobStyle(Qwt.QwtKnob.Sunken) knob.setMarkerStyle(Qwt.QwtKnob.Tick) #QwtLinearScaleEngine *scaleEngine = new QwtLinearScaleEngine( 2 ) #scaleEngine.setTransformation( new QwtPowerTransform( 2 ) ) #knob.setScaleEngine( scaleEngine ) """QList< double > ticks[ QwtScaleDiv.NTickTypes ] ticks[ QwtScaleDiv.MajorTick ] << 0 << 4 << 16 << 32 << 64 << 96 << 128 ticks[ QwtScaleDiv.MediumTick ] << 24 << 48 << 80 << 112 ticks[ QwtScaleDiv.MinorTick ] << 0.5 << 1 << 2 << 7 << 10 << 13 << 20 << 28 << 40 << 56 << 72 << 88 << 104 << 120 knob.setScale( QwtScaleDiv( 0, 128, ticks ) )""" knob.setTotalSteps(100) knob.setStepAlignment(False) knob.setSingleSteps(1) knob.setPageSteps(5) elif knobType == 3: knob.setKnobStyle(Qwt.QwtKnob.Flat) knob.setMarkerStyle(Qwt.QwtKnob.Notch) knob.setScaleEngine(Qwt.QwtLogScaleEngine()) knob.setScaleStepSize(1.0) knob.setScale(0.1, 1000.0) knob.setScaleMaxMinor(10) elif knobType == 4: knob.setKnobStyle(Qwt.QwtKnob.Raised) knob.setMarkerStyle(Qwt.QwtKnob.Dot) knob.setWrapping(True) elif knobType == 5: knob.setKnobStyle(Qwt.QwtKnob.Styled) knob.setMarkerStyle(Qwt.QwtKnob.Triangle) knob.setTotalAngle(180.0) knob.setScale(100, -100) return knob
def __init__(self, parent=None): Qwt.QwtPlot.__init__(self, parent) self.setAutoReplot(False) self.setTitle("Frequency Response of a Second-Order System") canvas = Qwt.QwtPlotCanvas() canvas.setBorderRadius(10) self.setCanvas(canvas) self.setCanvasBackground(QColor("MidnightBlue")) # legend legend = Qwt.QwtLegend() self.insertLegend(legend, Qwt.QwtPlot.BottomLegend) # grid grid = Qwt.QwtPlotGrid() grid.enableXMin(True) grid.setMajorPen(Qt.white, 0, Qt.DotLine) grid.setMinorPen(Qt.gray, 0, Qt.DotLine) grid.attach(self) # axes self.enableAxis(Qwt.QwtPlot.yRight) self.setAxisTitle(Qwt.QwtPlot.xBottom, "Normalized Frequency") self.setAxisTitle(Qwt.QwtPlot.yLeft, "Amplitude [dB]") self.setAxisTitle(Qwt.QwtPlot.yRight, "Phase [deg]") self.setAxisMaxMajor(Qwt.QwtPlot.xBottom, 6) self.setAxisMaxMinor(Qwt.QwtPlot.xBottom, 9) self.setAxisScaleEngine(Qwt.QwtPlot.xBottom, Qwt.QwtLogScaleEngine()) # curves self.d_curve1 = Qwt.QwtPlotCurve("Amplitude") self.d_curve1.setRenderHint(Qwt.QwtPlotItem.RenderAntialiased) self.d_curve1.setPen(Qt.yellow) self.d_curve1.setLegendAttribute(Qwt.QwtPlotCurve.LegendShowLine) self.d_curve1.setYAxis(Qwt.QwtPlot.yLeft) self.d_curve1.attach(self) self.d_curve2 = Qwt.QwtPlotCurve("Phase") self.d_curve2.setRenderHint(Qwt.QwtPlotItem.RenderAntialiased) self.d_curve2.setPen(Qt.cyan) self.d_curve2.setLegendAttribute(Qwt.QwtPlotCurve.LegendShowLine) self.d_curve2.setYAxis(Qwt.QwtPlot.yRight) self.d_curve2.attach(self) # marker self.d_marker1 = Qwt.QwtPlotMarker() self.d_marker1.setValue(0.0, 0.0) self.d_marker1.setLineStyle(Qwt.QwtPlotMarker.VLine) self.d_marker1.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) self.d_marker1.setLinePen(Qt.green, 0, Qt.DashDotLine) self.d_marker1.attach(self) self.d_marker2 = Qwt.QwtPlotMarker() self.d_marker2.setLineStyle(Qwt.QwtPlotMarker.HLine) self.d_marker2.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) self.d_marker2.setLinePen(QColor(200, 150, 0), 0, Qt.DashDotLine) self.d_marker2.setSymbol( Qwt.QwtSymbol(Qwt.QwtSymbol.Diamond, QColor(Qt.yellow), QColor(Qt.green), QSize(8, 8))) self.d_marker2.attach(self) self.setDamp(0) self.setAutoReplot(True)
def createSlider(self, sliderType): slider = Qwt.QwtSlider() if sliderType == 0: slider.setOrientation(Qt.Horizontal) slider.setScalePosition(Qwt.QwtSlider.TrailingScale) slider.setTrough(True) slider.setGroove(False) slider.setSpacing(0) slider.setHandleSize(QSize(30, 16)) slider.setScale(10.0, -10.0) slider.setTotalSteps(8) slider.setSingleSteps(1) slider.setPageSteps(1) slider.setWrapping(True) elif sliderType == 1: slider.setOrientation(Qt.Horizontal) slider.setScalePosition(Qwt.QwtSlider.NoScale) slider.setTrough(True) slider.setGroove(True) slider.setScale(0.0, 1.0) slider.setTotalSteps(100) slider.setSingleSteps(1) slider.setPageSteps(5) elif sliderType == 2: slider.setOrientation(Qt.Horizontal) slider.setScalePosition(Qwt.QwtSlider.LeadingScale) slider.setTrough(False) slider.setGroove(True) slider.setHandleSize(QSize(12, 25)) slider.setScale(1000.0, 3000.0) slider.setTotalSteps(200.0) slider.setSingleSteps(2) slider.setPageSteps(10) elif sliderType == 3: slider.setOrientation(Qt.Horizontal) slider.setScalePosition(Qwt.QwtSlider.TrailingScale) slider.setTrough(True) slider.setGroove(True) scaleEngine = Qwt.QwtLinearScaleEngine(2) scaleEngine.setTransformation(Qwt.QwtPowerTransform(2)) slider.setScaleEngine(scaleEngine) slider.setScale(0.0, 128.0) slider.setTotalSteps(100) slider.setStepAlignment(False) slider.setSingleSteps(1) slider.setPageSteps(5) elif sliderType == 4: slider.setOrientation(Qt.Vertical) slider.setScalePosition(Qwt.QwtSlider.TrailingScale) slider.setTrough(False) slider.setGroove(True) slider.setScale(100.0, 0.0) slider.setInvertedControls(True) slider.setTotalSteps(100) slider.setPageSteps(5) slider.setScaleMaxMinor(5) elif sliderType == 5: slider.setOrientation(Qt.Vertical) slider.setScalePosition(Qwt.QwtSlider.NoScale) slider.setTrough(True) slider.setGroove(False) slider.setScale(0.0, 100.0) slider.setTotalSteps(100) slider.setPageSteps(10) elif sliderType == 6: slider.setOrientation(Qt.Vertical) slider.setScalePosition(Qwt.QwtSlider.LeadingScale) slider.setTrough(True) slider.setGroove(True) slider.setScaleEngine(Qwt.QwtLogScaleEngine()) slider.setStepAlignment(False) slider.setHandleSize(QSize(20, 32)) slider.setBorderWidth(1) slider.setScale(1.0, 1.0e4) slider.setTotalSteps(100) slider.setPageSteps(10) slider.setScaleMaxMinor(9) if (slider): slider.setObjectName("Slider %d" % sliderType) return slider