Почему не увеличивается значение в 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_())