crossplatform.ru

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

6 страниц V  < 1 2 3 4 5 > »   
Ответить в данную темуНачать новую тему
> Торможения таймера при рисовании, Python
zuze
  опции профиля:
сообщение 8.4.2013, 11:05
Сообщение #21


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 8.4.2013, 10:51) *
Это все понятно, но картинка обновляется только когда начинает рисоваться новая, а не каждый шаг (по phi) отрисовки картинки.


Вы говорите о том, что я из таймера должен убрать

self.update()


но это не помогло.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.4.2013, 11:41
Сообщение #22


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

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

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




Репутация:   8  


Нет, я о том чтобы убрать вот это
 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())
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 8.4.2013, 12:19
Сообщение #23


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 8.4.2013, 11:41) *
Нет, я о том чтобы убрать вот это

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())


А куда, можно убрать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.4.2013, 12:22
Сообщение #24


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

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

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




Репутация:   8  


Туда, где загружается картинка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 8.4.2013, 13:14
Сообщение #25


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 8.4.2013, 12:22) *
Туда, где загружается картинка.


Так у меня картинка загружается тутже. Я загрузку картинки заменил на загрузку цвета. В таком случае, что делать?

Может такая задача в Python решаеться только с помощью потока и чтобы не использовался GIL (Global Interpreter Lock)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 8.4.2013, 14:00
Сообщение #26


Участник
**

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

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




Репутация:   0  


Цитата(zuze @ 8.4.2013, 10:21) *
Все правильно, подготовка картинки занимает почти секунду.


Почему всё правильно. У меня же таймер обновляется 5 секунд значит значения должно показаться 5 или близкое.
А выводится:
0.836999893188
0.838999986649
0.837999820709
0.832000017166
0.836999893188
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.4.2013, 16:03
Сообщение #27


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

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

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




Репутация:   8  


Потому что время замеряется ВНУТРИ одного вызова и показывает сколько времени проходит ВНУТРИ отрисовки, а не МЕЖДУ вызовами таймера.

Все зависит от того, как генерируются картинки. Они берутся не из файла, так откуда же?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 8.4.2013, 16:11
Сообщение #28


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 8.4.2013, 16:03) *
Все зависит от того, как генерируются картинки. Они берутся не из файла, так откуда же?


Значения беруться из двоичного файла и заносяться в список.
То есть в будущем будет такой код:

for j in range(0, 720, 1):
     for i in range(491, -1, -1):
            bf = struct.unpack("B", fp.read(1))
            im.setPixel(j, i, QtGui.QColor(bf[0], bf[0], bf[0], 255).rgba())


Это аналог кода в Qt который выгляжит так:

for (int j = 0; j < 720; j++)
{
     for (int i = 491; i >= 0; i--)
     {
          buffer[i][j] = getc(fp);
          im.setPixel(j, i, QColor(buffer[i][j], buffer[i][j], buffer[i][j], 255).rgba());
      }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.4.2013, 16:52
Сообщение #29


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

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

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




Репутация:   8  


Это я помню :lol:
В Qt этот код был не в paintEvent.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 8.4.2013, 21:12
Сообщение #30


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 8.4.2013, 16:52) *
В Qt этот код был не в paintEvent.


Он был в MyTimer, а тут

for j in range(0, 720, 1):
     for i in range(491, -1, -1):
            bf = struct.unpack("B", fp.read(1))
            im.setPixel(j, i, QtGui.QColor(bf[0], bf[0], bf[0], 255).rgba())


лежит в MyTimer. Всё аналогично.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

6 страниц V  < 1 2 3 4 5 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 20.4.2024, 5:35