您可以继承 QProgressBar 并使用一些样式表,请参阅使用样式表自定义 Qt 小部件和自定义 QProgressBar:
from PyQt4 import QtGui, QtCore
DEFAULT_STYLE = """
QProgressBar{
border: 2px solid grey;
border-radius: 5px;
text-align: center
}
QProgressBar::chunk {
background-color: lightblue;
width: 10px;
margin: 1px;
}
"""
COMPLETED_STYLE = """
QProgressBar{
border: 2px solid grey;
border-radius: 5px;
text-align: center
}
QProgressBar::chunk {
background-color: red;
width: 10px;
margin: 1px;
}
"""
class MyProgressBar(QtGui.QProgressBar):
def __init__(self, parent = None):
QtGui.QProgressBar.__init__(self, parent)
self.setStyleSheet(DEFAULT_STYLE)
def setValue(self, value):
QtGui.QProgressBar.setValue(self, value)
if value == self.maximum():
self.setStyleSheet(COMPLETED_STYLE)

另一种解决方案是将调色板重新分配给 QProgressBar ,这将允许您拥有“样式感知”组件:
class MyProgressBar(QtGui.QProgressBar):
def setValue(self, value):
QtGui.QProgressBar.setValue(self, value)
if value == self.maximum():
palette = QtGui.QPalette(self.palette())
palette.setColor(QtGui.QPalette.Highlight,
QtGui.QColor(QtCore.Qt.red))
self.setPalette(palette)