QAbstractSlider

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        # create components
        self.lcd = QtGui.QLCDNumber(self)
        self.lcd.setBaseSize(100, 100)
        self.sldh = QtGui.QSlider(QtCore.Qt.Horizontal, self)
        self.sldv = QtGui.QSlider(QtCore.Qt.Vertical, self)
        self.labelh = QtGui.QLabel("HSlider last state", self)
        self.labelv = QtGui.QLabel("VSlider last state", self)
        self.repeat = QtGui.QPushButton("Repeat", self);
        self.stop = QtGui.QPushButton("Stop", self);
        # create Layout
        self.grid = QtGui.QGridLayout(self)
        # add layout widgets
        self.grid.addWidget( self.lcd, 0, 0 )
        self.grid.addWidget( self.sldv, 0, 1 )
        self.grid.addWidget( self.sldh, 1, 0 )
        self.grid.addWidget( self.labelh, 2, 0 )
        self.grid.addWidget( self.labelv, 3, 0 )
        self.grid.addWidget( self.repeat, 2, 1 )
        self.grid.addWidget( self.stop, 3, 1)

        self.setLayout(self.grid)

        # set slots
        # valueChanged
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('valueChanged(int)'), self.lcd.display)
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('valueChanged(int)'), self.sldv.setValue)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('valueChanged(int)'), self.lcd.display)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('valueChanged(int)'), self.sldh.setValue)
        # actionTriggered
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('actionTriggered(int)'), self.printAction)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('actionTriggered(int)'), self.printAction)
        # rangechanged
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('rangeChanged(int,int)'), self.printRange)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('rangeChanged(int,int)'), self.printRange)
        # sliderMoved
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('sliderMoved(int)'), self.printMoved)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('sliderMoved(int)'), self.printMoved)
        # sliderPressed
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('sliderPressed()'), self.printPressed)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('sliderPressed()'), self.printPressed)
        # sliderReleased
        QtCore.QObject.connect(self.sldh, QtCore.SIGNAL('sliderReleased()'), self.printReleased)
        QtCore.QObject.connect(self.sldv, QtCore.SIGNAL('sliderReleased()'), self.printReleased)

        QtCore.QObject.connect(self.repeat, QtCore.SIGNAL('clicked()'), self.doRepeat)
        QtCore.QObject.connect(self.stop, QtCore.SIGNAL('clicked()'), self.stopRepeat)

        # 値の設定
        self.sldh.setValue(1)
        self.sldv.setValue(1)
        # 範囲の設定
        # same as setMaximum, setMinimum
        self.sldh.setRange(0, 50)
        self.sldv.setRange(10, 40)
        # トラッキングの有無
        # Falseの場合はドラッグして話したときに値が反映される
        self.sldh.setTracking(True)
        # スライドの向き
        self.sldh.setInvertedAppearance(False)
        # ホイール時の増加向き
        self.sldv.setInvertedControls(True)
        # ページキー押下時のステップ数
        self.sldh.setPageStep(5)
        self.sldv.setPageStep(10)
        # 1回のステップ数
        self.sldh.setSingleStep(2)
        # スライダの位置
        self.sldh.setSliderPosition(10)
        # アクションを引き起こす
        self.sldh.triggerAction(QtGui.QAbstractSlider.SliderMove)

        self.setGeometry(300, 300, 300, 300)
        self.setWindowTitle("QAbstractSlider")
        self.show()

    def printAction(self, action):
        """
        各スライダーの状態を返却
        """
        if self.sender().orientation() == QtCore.Qt.Vertical:
            label = self.labelv
        else:
            label = self.labelh
        if action == QtGui.QAbstractSlider.SliderNoAction:          label.setText("SliderNoACtion")
        elif action == QtGui.QAbstractSlider.SliderSingleStepAdd:   label.setText("SliderSingleStepAdd")
        elif action == QtGui.QAbstractSlider.SliderSingleStepSub:   label.setText("SliderSingleStepSub")
        elif action == QtGui.QAbstractSlider.SliderPageStepAdd:     label.setText("SliderPageStepAdd")
        elif action == QtGui.QAbstractSlider.SliderPageStepSub:     label.setText("SliderPageStepSub")
        elif action == QtGui.QAbstractSlider.SliderToMinimum:       label.setText("SliderToMinimum")
        elif action == QtGui.QAbstractSlider.SliderToMaximum:       label.setText("SliderToMaximum")
        elif action == QtGui.QAbstractSlider.SliderMove:            label.setText("SliderMove")

    def printRange(self, min, max):
        print "range changed: ", min, max
    def printMoved(self, value):
        print "moved: ", value
    def printPressed(self):
        print "pressed"
    def printReleased(self):
        print "released"

    def doRepeat(self):
       self.sldh.setRepeatAction(QtGui.QAbstractSlider.SliderSingleStepAdd, 0, 500)
    def stopRepeat(self):
       self.sldh.setRepeatAction(QtGui.QAbstractSlider.SliderNoAction)

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

リピートってどんな時に使うんでしょうか。