QProgressBar

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

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

        # create layout
        self.vbox = QtGui.QVBoxLayout(self)
        #
        #self.vbox.setSizeConstraint(QtGui.QLayout.SetMaximumSize)
        #self.vbox.setSizeConstraint(QtGui.QLayout.SetMinimumSize)


        # create progress bar
        self.hbar1 = QtGui.QProgressBar(self)
        self.hbar1.setMaximumSize(150, 20)
        # busy state
        self.hbar1.setMaximum(0)
        self.hbar1.setMinimum(0)

        self.hbar2 = QtGui.QProgressBar(self)
        self.hbar2.setMaximumSize(150, 20)
        self.hbar2.setTextDirection(QtGui.QProgressBar.TopToBottom)

        self.vbar1 = QtGui.QProgressBar(self)
        self.vbar1.setOrientation(QtCore.Qt.Vertical)
        self.vbar1.setMaximumSize(20, 150)
        self.vbar1.setInvertedAppearance(True)

        # create execute button
        self.execBtn = QtGui.QPushButton('Start', self)
        self.execBtn.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred))
        self.execBtn.clicked.connect(self.execute)
        self.execBtn.move(50, 0)

        # create timer
        self.timer = QtCore.QBasicTimer()
        self.step = 0

        # add components to layout
        self.vbox.addWidget(self.hbar1)
        self.vbox.addWidget(self.hbar2)
        self.vbox.addWidget(self.vbar1)
        self.vbox.setContentsMargins( 10, 10, 10, 10)
        self.vbox.addWidget(self.execBtn)


        self.setLayout(self.vbox)
        #self.setMinimumSize(10, 10)    # set minimum size
        #self.setMaximumSize(200, 300)  # set maximum size
        self.setFixedSize(200, 300)     # fixed window
        self.move(300, 300)
        self.setWindowTitle("QProgressBar")
        #self.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint); # invalid stretch window
        self.show()

    def timerEvent(self, e):

        if self.step >= 100:
            self.timer.stop()
            self.execBtn.setText('Restart')
            return

        self.step = self.step + 1
        self.hbar2.setValue(self.step)
        self.vbar1.setValue(self.step)

    def execute(self):

        if self.execBtn.text() == "Restart":
            self.step = 0

        if self.timer.isActive():
            self.timer.stop()
            self.execBtn.setText('Start')
        else:
            self.timer.start(10, self)
            self.execBtn.setText('Pause')



def main():

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


if __name__ == '__main__':
    main()

プログレスバーですね。簡単に実装できます。
最大値・最小値ともに0を指定するとビジー状態を実現できます。