예제 #1
0
 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
예제 #2
0
    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)
예제 #3
0
 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