Найти - Пользователи
Полная версия: ProgressBar и Timer
Начало » GUI » ProgressBar и Timer
1 2 3 4
py.user.next
Rodegast
1) Переводим всё это в миллисекунды (5*60+25)*1000
2) Передаём их в метод self.startProgressTimer(325000)
Вот чтобы всего этого не делать, и делается производный таймер, который отвечает за вычисления.
Rodegast
> Вот чтобы всего этого не делать, и делается производный таймер, который отвечает за вычисления.

Вот если тебе надо гвоздь забить ты как поступиш: “возмёш молоток и забьёш гвоздь” или “сначала построиш кузницу, в ней сделаеш молоток и только потом забьёш”?
py.user.next
Rodegast
Вот если тебе надо гвоздь забить ты как поступиш
Я найду объект, отвечающий за забивание, а если его нет - сделаю. У меня будет молоток, а у тебя - камень, тапочек, не знаю, что ещё.

Проблема вот этих инлайновых вычислений в том, что ты пришпиливаешь код к этому формату. Когда надо будет поменять формат (например, добавить ступенчатое заполнение), ты будешь носится по коду и менять эти таймауты, тогда как я просто заменю HMSTimer на HMSDelayTimer.
Rodegast
> Когда надо будет поменять формат (например, добавить ступенчатое заполнение)….

Вот только включать фантазию не надо. Это был простой пример того как можно сделать “заполнение” QProgressBar-а и не более того. Если будет стоять задача сделать гуй в котором понатыкано таких QProgressBar-ов, да ещё и с разными алгоритмами заполнения, то создавать кастомный объект таймера всё равно глупо. Я бы в таком случае далал как-то так:
class progressBar(QtGui.QProgressBar):
    def __init__(self, parent=None):
        QtGui.QProgressBar.__init__(self, parent)
        ....
    def start(self, time):
        ....
        self.startTimer(time)
        ....
    def timerEvent(self, event):
        ....
py.user.next
Rodegast
Это был простой пример того как можно сделать “заполнение” QProgressBar-а и не более того.
Так ему нужно равномерное заполнение. Равномерность определяется таймером (его сигналом). Поэтому, чтобы на неё повлиять, меняется таймер.
Ступенчатое заполнение - это когда он заполняется по 25 процентов к примеру, но тоже на протяжении заданного времени.
Rodegast
> Ступенчатое заполнение - это когда он заполняется по 25 процентов к примеру, но тоже на протяжении заданного времени.

И в чём проблема?
 self.progressBar.setMaximum(4)
Вот и будет тебе заплнение по 25%
py.user.next
Rodegast
И в чём проблема?
На протяжении 5 минут и 25 секунд это должно происходить. То есть таймер не должен посылать сигнал с интервалом, который подходит для одного процента.
Rodegast
А он его и не будет посылать. Он пошлёт 4 сигнала каждый из которых переключит progressBar на 25%
py.user.next
Rodegast
Он пошлёт 4 сигнала
Так у тебя таймер настроен не на 25, а на 1. В итоге проценты заполнятся раньше времени.
Я бы вообще к прогрессару добавлял значение, вычисленное заранее.

Я бы настроил таймер на 5 минут 25 секунд и 25 процентов и установил шаг для прогрессбара, равный 25. А потом это всё бы работало. И эти параметры можно было бы подавать, как аргумент.

(Мне просто действительно лень сейчас пример писать, чтобы ты понял, что я имею в виду.)
Rodegast
> Так у тебя таймер настроен не на 25, а на 1. В итоге проценты заполнятся раньше времени …. (Мне просто действительно лень сейчас пример писать, чтобы ты понял, что я имею в виду.)

Вот ты выдумал какую-то глупость и сам в неё веришь, а потратить 5 минут что бы разобраться как оно на самом деле работает тебе лень.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB