Растянуть изображение до размера окна в pyqtgraph

В настоящее время я пытаюсь создать графический интерфейс PyQtGraph для многократного построения изображения по мере поступления новых данных с использованием кода, подобного этому:

self.app = QtGui.QApplication([])
self.win = QtGui.QMainWindow()
self.win.resize(800, 600)
self.imv = pg.ImageView()
self.win.setCentralWidget(self.imv)
self.win.setWindowTitle('My Title')
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.check_for_new_data_and_replot)
self.timer.start(100)
self.win.show()

затем каждый раз, когда я получаю новые данные, я рисую изображение:

self.imv.setImage(self.data_array)

Одна проблема, с которой я сталкиваюсь, заключается в том, что мой массив данных обычно имеет искаженное соотношение сторон, т. Е. Обычно он действительно «высокий и худой» или «короткий и толстый», а отображаемое изображение имеет те же пропорции.

Есть ли способ растянуть изображение по размеру окна? Я просмотрел документацию для ImageView и ImageItem, но не могу найти то, что мне нужно. (Возможно, он там есть, но мне трудно его идентифицировать.)


person roberto    schedule 26.06.2015    source источник
comment
Попробуйте transform вариант ImageView::setImage(). Что-то вроде transform = QTransform().scale(sx, sy).   -  person Pavel Strakhov    schedule 28.06.2015


Ответы (1)


Я понял это - использование класса ImageItem более низкого уровня отображало изображение таким образом, чтобы оно соответствовало размеру окна:

self.app = QtGui.QApplication([])
self.win = pg.GraphicsLayoutWidget()
self.win.resize(800, 600)
self.img = pg.ImageItem()
self.plot = self.win.addPlot()
self.plot.addItem(self.img)
self.win.setWindowTitle('My Title')
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.check_for_new_data_and_replot)
self.timer.start(100)
self.win.show()

И для обновления данных изображения:

self.img.setImage(self.data_array)

Это также позволяет мне отображать шкалы осей по бокам, что мне тоже хотелось.

person roberto    schedule 29.06.2015