import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.vbox = QtGui.QVBoxLayout(self)
self.hbar1 = QtGui.QProgressBar(self)
self.hbar1.setMaximumSize(150, 20)
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)
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)
self.timer = QtCore.QBasicTimer()
self.step = 0
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.setFixedSize(200, 300)
self.move(300, 300)
self.setWindowTitle("QProgressBar")
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を指定するとビジー状態を実現できます。