from PyQt5.QtWidgets import QProgressBar
class progressbar_01(QProgressBar):
"""
可以显示一位小数,是通过将实际的 Value()除以10得到的。所以要将输入值乘以10以后再传输进来
"""
def __init__(self, parent=None):
super().__init__(parent)
self.last_var = 0
self.style = ''
self.style_color = ''
self.normal_style = ''
self.format = '' # 自定义的显示文字格式
self.text() # 重新定义显示的文字
self.k = 1
# self.setFormat(QString::fromLocal8Bit("%1%").arg(QString::number(dProgress, 'f', 1)))
def text(self): # 显示值是实际值的1/10
return str(self.value()/10.0) + self.format
def set_value_endline(self, var): # 当前进方向远离和靠近终点,颜色会从绿到红渐变
self.setValue(var) # 设定进度条的值
self.k = 255 / self.maximum()
if var > self.last_var:
self.style_color = '{},{},0'.format(round(self.k*var), 255-round(self.k*var))
else:
self.style_color = '{},{},0'.format(255-round(self.k*var), round(self.k*var))
self.style = 'QProgressBar {border: 2px solid grey; border-radius: 5px;}QProgressBar::chunk {background:rgb(' + self.style_color + '); }'
self.setStyleSheet(self.style)
self.last_var = var
def set_value_limit(self, var, limit): # 超过限制以后颜色变红
self.setValue(var) # 设定进度条的值
if self.normal_style == '':
self.normal_style = self.styleSheet()
if var < limit:
self.setStyleSheet(self.normal_style)
else:
self.setStyleSheet('QProgressBar { border: 2px solid gray; border-radius: 5px; background-color: #dadada;}QProgressBar::chunk {background:rgb(255,0,0); }')
def set_value_G2R(self, var): # 颜色会随着输入值大小从绿到红渐变
self.setValue(var) # 设定进度条的值
self.k = 255 / self.maximum()
self.style_color = '{},{},0'.format(round(self.k * var), 255 - round(self.k * var))
self.style = 'QProgressBar {border: 2px solid grey; border-radius: 5px;}QProgressBar::chunk {background:rgb(' + self.style_color + '); }'
self.setStyleSheet(self.style)