Для добавления шкалы или отметки нуля на `QProgressBar` в PyQt5, можно использовать кастомные рисовальщики (painter) и переопределить метод `paintEvent`.
Пример кода ниже показывает, как добавить шкалу с отметкой нуля на `QProgressBar` при отображении температуры:
```python
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
class CustomProgressBar(QtWidgets.QProgressBar):
def __init__(self, parent=None):
super(CustomProgressBar, self).__init__(parent)
self.setTextVisible(False) # отключаем отображение текста
def paintEvent(self, event):
painter = QtGui.QPainter()
painter.begin(self)
self.drawTemperatureScale(painter)
self.drawProgressBar(painter)
painter.end()
def drawTemperatureScale(self, painter):
# Задаем размеры шкалы
scale_width = 20
scale_height = 8
# Определяем позицию нулевой отметки на шкале
zero_position = self.width() * (1 - (self.value() - self.minimum()) / (self.maximum() - self.minimum()))
# Создаем красную кисть для отметки нуля
zero_mark_brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
painter.setBrush(zero_mark_brush)
# Рисуем отметку нуля
zero_mark_rect = QtCore.QRectF(zero_position, 0, scale_width, scale_height)
painter.drawRect(zero_mark_rect)
def drawProgressBar(self, painter):
# Рисуем стандартную прогресс-бар
super(CustomProgressBar, self).paintEvent(painter)
def main():
app = QtWidgets.QApplication(sys.argv)
progressBar = CustomProgressBar()
progressBar.setMinimum(-10)
progressBar.setMaximum(40)
progressBar.setValue(25)
progressBar.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
```
В этом примере создается кастомный виджет `CustomProgressBar`, который переопределяет метод `paintEvent`. Внутри метода `paintEvent` рисуется красная отметка нуля на шкале `QProgressBar`. Этот виджет также настраивает минимальное и максимальное значения шкалы и устанавливает текущее значение прогресса.
Вы можете изменить размеры шкалы, цвета и другие параметры внутри метода `drawTemperatureScale` согласно вашим потребностям.