Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Торможения таймера при зарисовки цветом [RSS Feed]

#1 Апрель 11, 2013 15:35:40

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Торможения таймера при зарисовки цветом

zeze
Зачем это делать, так как двухмерный массив значений построен уже?
QImage может создаваться из “сырых” данных, для этого конструктору нужно передать строку с данными и их формат, что и делается в __init__(). Это намного быстрее чем setPixel().

Вы кажется не поняли использование, уже писал:
img = BinImage("img.dat")
img - это теперь картинка, которую можно показывать и делать с ней что угодно. Например, показать на лэйбле.
img = BinImage("img.dat")
self.image_label.setPixmap(QtGui.QPixmap.fromImage(img))

Офлайн

#2 Апрель 12, 2013 09:56:56

zeze
От: Москва
Зарегистрирован: 2013-04-05
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Торможения таймера при зарисовки цветом

Я пробовал так сделать:

a = numpy.fromfile(fp, dtype=numpy.uint8)
a = numpy.flipud(a.reshape((492, 720), order='F'))
a.tostring()
im = QtGui.QImage.__init__(self, self, 492, 720, self.Format_Indexed8)

Для вывода так делаю:

def MyDraw(self):
        global im
        Tochka = QtGui.QPainter()
        Tochka.begin(self)
        Tochka.translate(50, 50)
        Tochka.drawImage(0, 0, im, 0, 0, int((2*self.MyRadianToGradus(phi))+0.5), 492)
        Tochka.end()
        self.update()

Выдаётся вот такая ошибка:
im = QtGui.QImage.__init__(self, self, 492, 720, self.Format_Indexed8)
TypeError: ‘sip.methoddescriptor’ object is not callable

Я пробовал в место

a.tostring()
im = QtGui.QImage.__init__(self, self, 492, 720, self.Format_Indexed8)

Написать

self.__data = a.tostring()
im = QtGui.QImage.__init__(self, self.__data, 492, 720, self.Format_Indexed8)

Таже самая ошибка. Не знаю важно или нет, но у меня Python 2.6

Как я понял я не правильно конструктор определил, а вот как правильно не понимаю. Помогите пожалуйста понять.


Отредактировано zeze (Апрель 12, 2013 11:13:05)

Офлайн

#3 Апрель 12, 2013 16:29:29

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Торможения таймера при зарисовки цветом

Не понимаю чего вы хотите.

self.__data = a.tostring()
im = QtGui.QImage(self.__data, 492, 720, self.Format_Indexed8)
Этого?

Похоже, что нужно почитать Учебник Python 2.6 - Классы

Офлайн

#4 Апрель 15, 2013 08:51:02

zeze
От: Москва
Зарегистрирован: 2013-04-05
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Торможения таймера при зарисовки цветом

reclosedev
Не понимаю чего вы хотите.

self.__data = a.tostring()
im = QtGui.QImage(self.__data, 492, 720, self.Format_Indexed8)

Этого?

Я сделал, как Вы написали, но увы у меня теперь ошибка:
im = QtGui.QImage(self.__data, 492, 720, self.Format_Indexed8)
TypeError: ‘sip.methoddescriptor’ object is not callable

Может это из-за того, что я не правильно определил im.
Определяю так:

im = QtGui.QImage(720, 492, QtGui.QImage.Format_ARGB32)

Пробовал так:

im = QtGui.QImage(720, 492, QtGui.QImage.Format_Indexed8)

Не помогло.

Отредактировано zeze (Апрель 15, 2013 09:44:21)

Офлайн

#5 Апрель 15, 2013 13:03:17

zeze
От: Москва
Зарегистрирован: 2013-04-05
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Торможения таймера при зарисовки цветом

Сделал так:

data = a.tostring()
im = QtGui.QImage(data, 492, 720, QtGui.QImage.Format_ARGB32)

Это ошибка пропадает.
Но в момент первого срабатывания таймера возникает ошибка:
Появляется окно с выбором из трёх кнопок:
1 кнопка (Искать решение проблемы в Интернете и закрыть программу)
2 кнопка (Закрыть программу)
3 кнопка (отладить программу)

А текстом пишется:
Process finished with exit code -1073741819

В чём может быть дело?

Отредактировано zeze (Апрель 15, 2013 13:05:21)

Офлайн

#6 Апрель 15, 2013 17:50:28

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Торможения таймера при зарисовки цветом

Потому что передающий в QImage data отвечает за нее, т.е. она должна хранится. А при выходе из функции/цикла, Python удаляет ее.
http://qt-project.org/doc/qt-4.8/qimage.html#QImage-4

The buffer must remain valid throughout the life of the QImage. The image does not delete the buffer at destruction.

Это все было учтено в BinImage. Хотите чтобы работало - используйте так, как было изначально показано. Хотите извращений - удачи, мне в этом участвовать надоело.

Офлайн

  • Начало
  • » GUI
  • » Торможения таймера при зарисовки цветом [RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version