Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2015 00:41:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

ProgressBar и Timer

Rodegast
1) Переводим всё это в миллисекунды (5*60+25)*1000
2) Передаём их в метод self.startProgressTimer(325000)
Вот чтобы всего этого не делать, и делается производный таймер, который отвечает за вычисления.



Отредактировано py.user.next (Июнь 3, 2015 00:41:53)

Офлайн

#2 Июнь 3, 2015 14:35:22

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

ProgressBar и Timer

> Вот чтобы всего этого не делать, и делается производный таймер, который отвечает за вычисления.

Вот если тебе надо гвоздь забить ты как поступиш: “возмёш молоток и забьёш гвоздь” или “сначала построиш кузницу, в ней сделаеш молоток и только потом забьёш”?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Июнь 4, 2015 00:45:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

ProgressBar и Timer

Rodegast
Вот если тебе надо гвоздь забить ты как поступиш
Я найду объект, отвечающий за забивание, а если его нет - сделаю. У меня будет молоток, а у тебя - камень, тапочек, не знаю, что ещё.

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



Отредактировано py.user.next (Июнь 4, 2015 00:46:45)

Офлайн

#4 Июнь 4, 2015 10:50:00

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

ProgressBar и Timer

> Когда надо будет поменять формат (например, добавить ступенчатое заполнение)….

Вот только включать фантазию не надо. Это был простой пример того как можно сделать “заполнение” 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):
        ....



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Июнь 4, 2015 12:36:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

ProgressBar и Timer

Rodegast
Это был простой пример того как можно сделать “заполнение” QProgressBar-а и не более того.
Так ему нужно равномерное заполнение. Равномерность определяется таймером (его сигналом). Поэтому, чтобы на неё повлиять, меняется таймер.
Ступенчатое заполнение - это когда он заполняется по 25 процентов к примеру, но тоже на протяжении заданного времени.



Офлайн

#6 Июнь 4, 2015 15:49:48

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

ProgressBar и Timer

> Ступенчатое заполнение - это когда он заполняется по 25 процентов к примеру, но тоже на протяжении заданного времени.

И в чём проблема?

 self.progressBar.setMaximum(4)
Вот и будет тебе заплнение по 25%



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Июнь 4, 2015 16:05:50)

Офлайн

#7 Июнь 4, 2015 16:30:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

ProgressBar и Timer

Rodegast
И в чём проблема?
На протяжении 5 минут и 25 секунд это должно происходить. То есть таймер не должен посылать сигнал с интервалом, который подходит для одного процента.



Офлайн

#8 Июнь 4, 2015 16:32:30

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

ProgressBar и Timer

А он его и не будет посылать. Он пошлёт 4 сигнала каждый из которых переключит progressBar на 25%



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Июнь 5, 2015 00:43:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

ProgressBar и Timer

Rodegast
Он пошлёт 4 сигнала
Так у тебя таймер настроен не на 25, а на 1. В итоге проценты заполнятся раньше времени.
Я бы вообще к прогрессару добавлял значение, вычисленное заранее.

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

(Мне просто действительно лень сейчас пример писать, чтобы ты понял, что я имею в виду.)



Отредактировано py.user.next (Июнь 5, 2015 00:47:08)

Офлайн

#10 Июнь 5, 2015 10:32:23

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

ProgressBar и Timer

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

Вот ты выдумал какую-то глупость и сам в неё веришь, а потратить 5 минут что бы разобраться как оно на самом деле работает тебе лень.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version