crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Торможения таймера при рисовании, Python
zuze
  опции профиля:
сообщение 29.3.2013, 10:34
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я пытаюсь закрасить область красным цветом за определённое время. Область будет закрашиватся каждый раз пока я не остановлю таймер.
Код:
# Глобальные
phi = 0.0
FlagStopRunPhi = 0
RunStopTimer = 1
timer = QtCore.QTimer()
im1 = QtGui.QImage(720, 492, QtGui.QImage.Format_ARGB32)

# В конструкторе

# Запустить таймер
self.connect(self.ui.pushButton_3, QtCore.SIGNAL("clicked()"), self.BlockTimer)

# Что происходит по таймеру
self.connect(timer, QtCore.SIGNAL("timeout()"), self.MyTimer)

def paintEvent(self, QPaintEvent):
      self.MyDraw()

# Запустить таймер
def BlockTimer(self):
            timer.start(0.05*1000)/60)

# Что происходит по таймеру
def MyTimer(self):
        global phi
        global im1

        if self.ui.checkBox_4.isChecked():
            for j in range(0, 720, 1):
                for i in range(491, -1, -1):
                    im1.setPixel(j, i, QtGui.QColor(255, 0, 0, 255).rgba())

        self.update()

        if self.ui.radioButton_2.isChecked():
            if int(self.MyRadianToGradus(phi)+0.5)*720/360 < 720:
                phi += self.MyGradusToRadian(6.0)
            else:
                phi = self.MyGradusToRadian(6.0)

# Рисуем
def MyDraw(self):
        global im1
        global phi

        Tochka = QtGui.QPainter()
        Tochka.begin(self)

        Tochka.translate(50, 50)

        Tochka.drawImage(0, 0, im1, 0, 0, int((2*self.MyRadianToGradus(phi))+0.5), 492)

        Tochka.end()


Должно быстро закрашиватся цветом, а закрашивается, только через каждые 0.5 секунды. Почему так происходит? В Qt всё быстро закрашивается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 4.4.2013, 9:20
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


timer.start((0.005 * 1000) / 60)

(0.005 * 1000) / 60 ~ 0
Поэтому таймер будет выстреливать так быстро как может, то есть постоянно.

А в обработчике таймера его ждет такой цикл:
if self.ui.checkBox.isChecked():
    for j in range(0, 720, 1):
        for i in range(491, -1, -1):
            im.setPixel(j, i, QtGui.QColor(255, 0, 0, 255).rgba())

Т.е. картинка перегенерируется постоянно, это небыстро, отсюда и тормоза.

Сообщение отредактировал lanz - 4.4.2013, 9:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- zuze   Торможения таймера при рисовании   29.3.2013, 10:34
- - Iron Bug   питон - интерпретатор. его скорость от 10 до 500 р...   29.3.2013, 11:02
- - zuze   Цитата(Iron Bug @ 29.3.2013, 11:02) питон...   29.3.2013, 11:17
- - Iron Bug   если ты утверждаешь, что Qt не тормозит, то больше...   29.3.2013, 16:57
- - zuze   Прямоугольная область с торможениями закрашивается...   3.4.2013, 15:28
- - lanz   timer.start((0.005 * 1000) / 60) (...   4.4.2013, 9:20
- - zuze   Цитата(lanz @ 4.4.2013, 9:20) Т.е. картин...   4.4.2013, 9:24
- - lanz   ЦитатаА как это поправить? Нужно картинку сгенери...   4.4.2013, 9:50
- - zuze   Цитата(lanz @ 4.4.2013, 9:50) Может он и ...   4.4.2013, 10:17
- - lanz   Если картинка не успевает обновится за 15 мс (а он...   4.4.2013, 10:37
- - zuze   Цитата(lanz @ 4.4.2013, 10:37) Поэтому и ...   4.4.2013, 10:45
- - lanz   1. Таймер в Qt. Python только вызывает функции. 2....   4.4.2013, 10:57
- - zuze   Цитата(lanz @ 4.4.2013, 10:57) 2. А как б...   4.4.2013, 11:11
- - zuze   Как я понял, мой коде есть ряд ошибок: 1. Код не у...   5.4.2013, 13:46
- - lanz   ЦитатаКод не удовлетворяет модели "модель-пре...   8.4.2013, 8:45
- - zuze   Цитата(lanz @ 8.4.2013, 8:45) Основные то...   8.4.2013, 8:54
- - zuze   Решил проверить время выполнения кода. if self.ui...   8.4.2013, 10:21
- - lanz   Все правильно, подготовка картинки занимает почти ...   8.4.2013, 10:35
- - zuze   Цитата(lanz @ 8.4.2013, 10:35) Картинку н...   8.4.2013, 10:43
- - lanz   Это все понятно, но картинка обновляется только ко...   8.4.2013, 10:51
- - zuze   Цитата(lanz @ 8.4.2013, 10:51) Это все по...   8.4.2013, 11:05
- - lanz   Нет, я о том чтобы убрать вот это if self.ui.chec...   8.4.2013, 11:41
- - zuze   Цитата(lanz @ 8.4.2013, 11:41) Нет, я о т...   8.4.2013, 12:19
- - lanz   Туда, где загружается картинка.   8.4.2013, 12:22
- - zuze   Цитата(lanz @ 8.4.2013, 12:22) Туда, где ...   8.4.2013, 13:14
- - zuze   Цитата(zuze @ 8.4.2013, 10:21) Все правил...   8.4.2013, 14:00
- - lanz   Потому что время замеряется ВНУТРИ одного вызова и...   8.4.2013, 16:03
- - zuze   Цитата(lanz @ 8.4.2013, 16:03) Все зависи...   8.4.2013, 16:11
- - lanz   Это я помню В Qt этот код был не в paintEvent.   8.4.2013, 16:52
- - zuze   Цитата(lanz @ 8.4.2013, 16:52) В Qt этот ...   8.4.2013, 21:12
- - lanz   И в том треде я писал, что надо вынести этот код и...   9.4.2013, 8:25
- - zuze   Цитата(lanz @ 9.4.2013, 8:25) И вообще, н...   9.4.2013, 9:40
- - lanz   Во втором пункте никак не избавиться. С какой ско...   9.4.2013, 13:35
- - zuze   Цитата(lanz @ 9.4.2013, 13:35) С какой ск...   9.4.2013, 13:38
- - lanz   А сколько времени должна рисоваться одна картинка?   10.4.2013, 14:20
- - zuze   Цитата(lanz @ 10.4.2013, 14:20) А сколько...   10.4.2013, 15:55
- - lanz   Очень странные цифры, за 50 мс - это два - три кад...   10.4.2013, 16:21
- - zuze   Цитата(lanz @ 10.4.2013, 16:21) зачем пер...   11.4.2013, 15:16
- - zuze   Сделал так: data = a.tostring() im = QtGu...   15.4.2013, 13:06
- - lanz   Ошибка при работе с памятью скорее всего, видимо с...   15.4.2013, 13:55
- - zuze   Цитата(lanz @ 15.4.2013, 13:55) Выложите ...   15.4.2013, 14:25
- - lanz   1. Не нужно вызывать update в методе paintEvent эт...   15.4.2013, 16:43
- - zuze   Я сделал так: # -*- coding: utf-8 -*- from Py...   16.4.2013, 8:44
- - lanz   ЦитатаЯ незнаю как сделать im локально, так как я ...   16.4.2013, 9:46
- - zuze   Цитата(lanz @ 16.4.2013, 9:46) Не надо де...   16.4.2013, 10:07
- - lanz   Конечно. Загружаете 720*492 байт, а картинке говор...   16.4.2013, 10:23
- - zuze   Цитата(lanz @ 16.4.2013, 10:23) Конечно. ...   16.4.2013, 10:36
- - lanz   Можно использовать Format_Indexed8, только нужно о...   16.4.2013, 11:29
- - zuze   Цитата(lanz @ 16.4.2013, 11:29) Можно исп...   16.4.2013, 12:21
- - lanz   setColorTable нужно вызывать у конкретного экземпл...   16.4.2013, 12:48
- - zuze   Цитата(lanz @ 16.4.2013, 12:48) setColorT...   16.4.2013, 13:00
- - lanz   im = QtGui.QImage(data, 492, 720, QtGui.QImage...   16.4.2013, 13:59
- - zuze   Цитата(lanz @ 16.4.2013, 13:59) И как эти...   16.4.2013, 14:07
- - lanz   ЦитатаПервый байт после управляющих символов - это...   16.4.2013, 14:36
- - zuze   Цитата(lanz @ 16.4.2013, 14:36) Вопрос - ...   16.4.2013, 14:41
- - lanz   У меня все отрисовывается без ошибок. Возможно про...   16.4.2013, 15:42
- - zuze   lanz, прошу прощения, что не отвечал, был в отпуск...   7.5.2013, 10:53
- - lanz   С выводом картинки, насколько я понял проблем нет....   14.5.2013, 9:30


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 16:47