python – 更改QProgressbar的颜色()
作者:互联网
我想知道是否可以改变PyQt Progressbar的颜色?
我有以下代码:
from PyQt4 import QtGui, QtCore
Pbar1 = QtGui.QProgressBar()
Pbar1.setParent(Frame1)
Pbar1.setGeometry(0, 0, 306, 30)
Pbar1.setValue(Frame1Value)
if Pbar1.value == 100
......Pbar1.setColor(Red)
Frame1Value可靠于某些早期计算,并且假设从未计算到完全相同的值.
我希望进度条在值为100时变为“红色”(由于进度条不会显示超过100%的值,因此值设置为限制),因此给我一个更好的视觉图像,表明该值是’脱离约束’.
我知道.setColor不是Progressbar的已知命令,但它只是为了显示我的想法.
有谁知道怎么做,或者甚至可能?
Thx提前!
解决方法:
您可以子类化QProgressBar并使用一些样式表
见Customizing Qt Widgets Using Style Sheets和Customizing 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)
标签:python,progress-bar,pyqt,pyqt4,qprogressbar 来源: https://codeday.me/bug/20190530/1187108.html