Почему не увеличивается значение в QProgressBar?

Ребят помогите разобраться, у меня есть QProgressBar, если вводимое значение превышает максимум в QProgressBar, то он не добавляет его в QProgressBar.

Я хочу чтобы если вводимое значение превысило максимум, он заполнил всю шкалу и на шкале отображалось,
например:

  • если я ввел сразу 2500: 2500/2000,
  • потом если я ввел еще 1000, то уже было бы 3500/2000.
from PyQt5.QtWidgets import (QWidget, QApplication, QVBoxLayout, QProgressBar, QPushButton, QInputDialog)
from PyQt5.QtCore import Qt
import sys


class Test(QWidget):
    def __init__(self, parent=None):
        super(Test, self).__init__(parent)
        self.bar_progress_calories = QProgressBar(minimum=0, maximum=2000, alignment=Qt.AlignCenter)
        self.bar_progress_calories.setValue(0)
        self.bar_progress_calories.setFormat('%v/%m')

        self.btn_add = QPushButton('Добавить')
        self.btn_add.clicked.connect(self.window_add)

        self.hbox = QVBoxLayout()
        self.hbox.addWidget(self.bar_progress_calories)
        self.hbox.addWidget(self.btn_add)
        self.setLayout(self.hbox)

    def window_add(self):
        text, ok = QInputDialog.getInt(self, 'Input Dialog', 'Введите вес:')
        if ok:
            self.bar_progress_calories.setValue(text + self.bar_progress_calories.value())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Test()
    win.show()
    sys.exit(app.exec_())


Ответы (1 шт):

Автор решения: Tesla

Пока что я остановился на этом, добавил пару строк, я беру значение в переменной text и проверяю больше ли оно максимального значения заданного в QProgressBar(minimum=0, maximum=2000, alignment=Qt.AlignCenter),
если оно больше, то я задаю значение максимум и вместо %v подставляю text, иначе просто задаю новое значение.

from PyQt5.QtWidgets import (QWidget, QApplication, QVBoxLayout, QProgressBar, QPushButton, QInputDialog)
from PyQt5.QtCore import Qt
import sys


class Test(QWidget):
    def __init__(self, parent=None):
        super(Test, self).__init__(parent)
        self.bar_progress_calories = QProgressBar(minimum=0, maximum=2000, alignment=Qt.AlignCenter)
        self.bar_progress_calories.setValue(0)
        self.bar_progress_calories.setFormat('%v/%m')

        self.btn_add = QPushButton('Добавить')
        self.btn_add.clicked.connect(self.window_add)

        self.hbox = QVBoxLayout()
        self.hbox.addWidget(self.bar_progress_calories)
        self.hbox.addWidget(self.btn_add)
        self.setLayout(self.hbox)

    def window_add(self):
        text, ok = QInputDialog.getInt(self, 'Input Dialog', 'Введите вес:')
        if ok:
            text += self.bar_progress_calories.value()
            if text > self.bar_progress_calories.maximum():
                self.bar_progress_calories.setValue(self.bar_progress_calories.maximum())
                self.bar_progress_calories.setFormat(f'{text}/%m')
            else:
                self.bar_progress_calories.setValue(text)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Test()
    win.show()
    sys.exit(app.exec_())
→ Ссылка